如何用串口进行调试-串口调试工具原理

串口是MCU最重要的一个通信端口,几乎所有的嵌入式产品都会用到串口,可能是产品预研的时候用来调试,可能是与某一个外设连接收发数据,还可能用来对产品进行固件升级。这篇文章主要给大家介绍一下如何用串口进行调试,也就是打印log。

打印log最常用的方法是printf,所以要解决的问题是将printf的输出重定向到串口,然后通过串口将数据发送出去。

首先要配置串口,串口的配置包括:

1、 开启串口和GPIO时钟

2、 GPIO引脚模式配置

3、 串口波特率、数据位、停止位、校验位的配置

4、 使能串口

代码如下(使用stm32 LL库):

如何用串口进行调试-串口调试工具原理

此时,已经可以通过串口来收发数据了,但是只能通过库函数一个一个从数据寄存器读写单个字符,非常的不方便。

下面说一下如何重定向printf。这里我在Ubuntu下用make编译源码,所以重定向的方式与用keil有所区别。

首先要在源码文件开头包含头文件#include ,然后在串口初始化时调用setvbuf(stdout, NULL, _IONBF, 0),设置buffer缓存为0,这样一有数据就发送,不然会等到缓存满或有回车换行符才发送。如果没有这句,你的printf又没n,log就会打不出来。

如何用串口进行调试-串口调试工具原理

接下来是重定向的代码

如何用串口进行调试-串口调试工具原理

这里有两个地方需要注意,第一,用gcc编译需要加_write()函数,然后在函数内部调用__io_putchar()函数将字符串一个一个发送出去。第二,使用LL库发送数据,要查看发送寄存器是否为空或者发送是否完成标志,否则发的太快会导致前面的数据还没发完,后边的数据又来了,后边的覆盖掉前面的,导致发送错误。

到此,就可以尽情使用printf调试了。

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:如何用串口进行调试-串口调试工具原理 https://www.yhzz.com.cn/a/4240.html

上一篇 2023-04-10
下一篇 2023-04-10

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。