STC8 实现 115200 波特率串口通信

平台

STC8A8K64S4A12

 

背景

手头上刚好有这个51板子,按 STC-ISP 范例进行115200 波特率串口通信时居然不OK,输出乱码!!!但是,按官方手册计算方式换成 9600 进行通信正常,为此走了一点坑,下面直接说解决方案吧

 

1 贴重点,如下图红框处所示(一开始我自己也没有注意到),STC8 发送端需要软件设置为强推挽输出模式或者外接3-5K的上拉电阻

STC8 实现 115200 波特率串口通信_第1张图片

2 好了,那么发送端设置为强推挽输出即可,接收端呢?设置为准双向即可。我这边用的是串口1,则设置如下,将如下设置添加到范例 uart 初始化函数最开头部分即可

P3M0 = 0xFE; //TX 设置强挽推,RX设置准双向

P3M1 = 0x00;

 

3 有个疑问为什么波特率设为 9600 时,不用做如上 IO 配置也可正常输出数据呢?这个对于不了解的新手,若是一开始 9600 通信成功后,再排查 115200 波特率通信问题岂不是很坑了。其次范例程序既然是以 115200 波特率通信做demo,那么应该在 uart 初始化函数上就加上 IO 的配置,要不然很容易让新手出现115200 输出乱码,或者RX配错,进不了接收中断

你可能感兴趣的:(STC8 实现 115200 波特率串口通信)