GKoSon 发表于 2018-4-21 12:41:35

成功解决串口发送乱码问题

前几天做了串口收发实验,今天换了个板子继续操作,结果。。。。不能重现当天的效果!
串口打印的是乱码!
找了找,原来当天的板子是普普通通的8M晶振的

,今天的这个突然搞成12M晶振了!


怎么办?跟串口的115200--N--8--1乱码是两码事,找:HSE_VALUE这个常量
HAL库默认是8M的 改成12M就好了。如图。

1HSI_VALUE这个不用看,一般都是用的HSE
2其实还有别的地方也有这个变量,貌似不用改。因为在上面的地方已经定义了,而且是先定义的。


maxtch 发表于 2018-4-22 04:12:40

ST 给的启动文件其实是不支持 12M 外部频率的。改一下启动代码吧,把 PLL 从 9 倍频改成 6 倍频。

x5y4z3 发表于 2018-4-22 07:04:10

一直使用 8Mhz 晶振的路过!~
使用 8Mhz 整的晶振肯定多少是会有 Baudrate Deviation Error,所以每次送收的 Frame 尽可能的短些...
这样每一个 Byte 的起始位元比较能被同步侦测到而错误率较低些。
不然还有一种方式,就是在 UART 的协议层自订一些纠错的功能,如此也能改善 Baudrate Error 所产生的问题。
页: [1]
查看完整版本: 成功解决串口发送乱码问题