最近再做PCB设计,设计好打样回来焊接完成后调试串口收发,串口助手一直返回乱码。
芯片使用的是stm32L051C8T6,串口程序用cube MX生成的,使用USART1串口,时钟源用的是HSI(16MHz)。生成后添加上了串口收发函数,这个操作在开发板上也试过可以正常运行,所以烧录的程序应该不会有问题。
波特率是保持一致的,115200和9600都有试过,但是都是乱码输出。
一开始是想使用HSE的,不过这块的PCB设计不敢保证没有问题,所以想先用HSI试试,但是也是一直乱码就很头痛,
请问是还有什么遗漏的点没有注意到吗?大家觉得哪些点需要注意求评论,我看看可有遗漏处。
以上操作都在F4的开发板试过一次,可以正常收发数据,其它就是复现以下相同的流程在L0芯片上。
你发送的数据是什么,你要接收的是十六进制数的话就16进制显示,是字符串的话换个串口调试助手试试
极有可能是时钟不同从而波特率不对导致的,你的开发板应该有外部时钟的,程序也是根据外部时钟配的。当没有外部时钟时程序可能会重新配置时钟,此时频率变了。解决的方式是自己修改时钟配置程序确认时钟正确(包括主频和外设总线时钟),或者简单点就是用开发板一样的晶振作时钟。