码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 手把手教程6-2: F460把debug printf功能改到UART1


    目录

    一、修改头文件drv_uart.h,

    1.1 在头文件drv_uart.h中定义各个用到的管脚/端口号:

    二、驱动文件drv_uart.c。

    2.1 初始化配置

    三、应用文件sys_com.c。

    3.1 初始化函数

    四、主函数文件


     配套开发板请移步博主小店: 
    ​​​​​​​https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111debhMzSwz&ft=t&id=660179379335

    参考:手把手教程6: F460使用自带的debug printf功能

    一、修改头文件drv_uart.h,

    1.1 在头文件drv_uart.h中定义各个用到的管脚/端口号:

    1. //MUSART1 debug printf 管脚设置
    2. #define USART1_TX_PORT (PortA)
    3. #define USART1_TX_PIN (Pin10)
    4. #define USART1_TX_FUNC (Func_Usart1_Tx)
    5. #define USART1_RX_PORT (PortA)
    6. #define USART1_RX_PIN (Pin09)
    7. #define USART1_RX_FUNC (Func_Usart1_Rx)
    8. enum
    9. {
    10. UART_COM = 0, //485 通讯口
    11. UART_DEBUG = 1, //232 debug口
    12. UART_COM232 = 2, //232 通讯口
    13. UART1_DEBUG = 3, //UART1 debug口
    14. UART_MAX
    15. };

    二、驱动文件drv_uart.c。

    2.1 初始化配置

    drv_uart_init中增加UART1相关的初始化配置;

    由于只会使用到TX,所以RX不用初始化;

    1. else if (ch == UART1_DEBUG) //初始化MUSART1(debug)
    2. {
    3. /*Enable peripheral clock *//*打开时钟*/
    4. PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_USART1, Enable);
    5. /*20211229: Initialize USART IO */ /*配置相应的IO作为串口的TX,RX引脚*/
    6. PORT_SetFunc(USART1_TX_PORT, USART1_TX_PIN, USART1_TX_FUNC, Disable);
    7. //接收引脚配置
    8. //PORT_SetFunc(USART1_RX_PORT, USART1_RX_PIN, USART1_RX_FUNC, Disable);
    9. /*V201:20211229: 配置串口使用的时钟和基本通信配置*/
    10. stcInitCfg.enClkMode=UsartIntClkCkNoOutput; //使用内部时钟源,不需要在其时钟输出IO上输出通信的时钟信号
    11. stcInitCfg.enClkDiv=UsartClkDiv_1; //时钟不分频
    12. stcInitCfg.enDataLength=UsartDataBits8; //一个字节数据用8位数据位表示
    13. stcInitCfg.enDirection=UsartDataLsbFirst; //先传输低位
    14. stcInitCfg.enStopBit=UsartOneStopBit; //停止位1位
    15. stcInitCfg.enParity=UsartParityNone; //无奇偶校验
    16. stcInitCfg.enSampleMode=UsartSampleBit8; //每次传输8位(1字节),也可以传输 UsartSamleBit16(16位,2字节)
    17. stcInitCfg.enDetectMode=UsartStartBitFallEdge; //开始位是低电平
    18. stcInitCfg.enHwFlow=UsartRtsEnable; //使能RTS (串口开始传输前让RTS输出一个高脉冲信号)
    19. /*初始化串口配置*/
    20. USART_UART_Init(MUSART1, &stcInitCfg);
    21. /*设置串口波特率-115200*/
    22. USART_SetBaudrate(MUSART1, USART1_BAUDRATE);
    23. USART_FuncCmd(MUSART1, UsartTx, Enable); //使能发送
    24. RX使能
    25. //USART_FuncCmd(MUSART1, UsartRx, Enable); //使能接收
    26. //USART_FuncCmd(MUSART1, UsartRxInt, Enable); //使能接收中断
    27. uart[ch].uart = MUSART1;
    28. uart[ch].name = "uart_4";
    29. uart[ch].initialize = XX_TRUE;
    30. TASK_LOG(USE_DEBUG_INIT, ("initialize %s\r\n", uart[ch].name));
    31. }

    drv_uart_close中关闭UART1

    1. else if (ch == UART1_DEBUG)
    2. {
    3. PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_USART1, Disable); //关闭uart1
    4. }

    三、应用文件sys_com.c。

    3.1 初始化函数

    增加初始化函数;

    1. /*******************************************************************************/
    2. /**
    3. * @brief uart1_debug端口初始化
    4. * @param None
    5. * @retval 初始化成功返回XX_OK; 初始化失败返回XX_ERROR;
    6. */
    7. xx_err_t drv_uart1_debug_init(void)
    8. {
    9. if (drv_uart_init(UART1_DEBUG) == XX_OK)
    10. {
    11. return XX_OK;
    12. }
    13. return XX_ERROR;
    14. }

    四、主函数文件

    初始化

    最后在主函数文件中需要声明,否则串口功能不正常:

    1. #if USE_PRINTF
    2. //use microlib
    3. #include
    4. int fputc(int ch, FILE *f)
    5. {
    6. return drv_uart_write(UART1_DEBUG, &ch, 1);
    7. }
    8. #endif

    修改完成后,编译下载,运行,UART1可以正常输出打印信息,原来的232端口不再有打印信息了;

  • 相关阅读:
    【Redis】如何保证缓存和数据库的一致性
    如何使用visual studio 2010构建SQLite3.lib文件
    常用类面试题总结(一)
    2022年9月2号(常用matlab图像处理函数)
    怪怪815网站
    基于SqlSugar的开发框架循序渐进介绍(8)-- 在基类函数封装实现用户操作日志记录
    怎么合并多个PDF文件?看完这篇你就会了
    《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第2章 日志采集
    竹云产品入选《2023年度上海市网络安全产业创新攻关成果目录》
    Springboot整合taos时序数据库TDengine
  • 原文地址:https://blog.csdn.net/childbor/article/details/126692272
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号