1257_借助于Arduino调试STM32F103的UART串口功能
全部学习汇总: https://github.com/GreyZhang/g_stm32f103
工作这么多年,一直在做嵌入式软件开发,但是我串口用的的确是很少。其实,串口在调试的时候可以是一个很好的调试辅助工具,我后来注意了一下大多数的开发板上都带着串口。甚至说流行全球的Arduino,最主要的一个调试监控手段就是串口。不过,不巧的是我拿到的这个STM32F103的串口没有现成的转换器。没法直接借助于PC上的串口工具来查看串口上的信息。
硬件的知识比较薄弱,很多基础的电路应该是什么样子我也不是很熟悉。我接触到的控制器,几乎全部通信都是CAN,但是RS232等通信非常少。我之前用MicroChip的MCU开发板做J1939的学习的时候,当时用的RS232转USB的线来监控的数据信息,非常方便。这一次,配置完了UART的驱动之后,我先直接把收发两根线接到了RS232转USB的线上。的确是看到了一些信息,但是看到的都是乱码。
一下子想到了前面临时补充的TTL的硬件基础,其实,MCU出来的信号算是一个TTL的电平。那么,Arduino的UART的管脚其实也是可以直接印出来的(参考后面的图)。或许,我可以直接用串口把信息传到Arduino上,再通过Arduino从Arduino的RX转到TX就好了。如果真是为了查看打印的信息,那么甚至直接一根线就可以了。
接下来,做了测试,直接把STM32F103的TX接到了Arduino的RX上。之后,Arduino中下载如下程序。
看到这里,感觉Arduino用来做一个什么测试设备或者小的工具的确是太方便了。
STM32F103的板子上,我利用CubeIDE配置了UART的驱动功能之后,直接接着使用UART的接口实现了一个printf的功能。
之后,软件烧写之后运行看到了上面的效果。现在,STM32F103的板子上的信息被发出来了,接着通过PC的串口解析工具解析出来了。
嵌入式开发,甚至说是软件开发最让人抓狂的时候通常是因为我们获取不到足够多的信息,看不到软件运行时候很多内在的状态。而printf是用来增加这种信息获取的一个绝佳的工具,有了这样的工具,我觉得接下来的STM32F103的折腾应该多了一点轻松感了。