平台
STC8A8K64S4A12
背景
手头上刚好有这个51板子,按 STC-ISP 范例进行115200 波特率串口通信时居然不OK,输出乱码!!!但是,按官方手册计算方式换成 9600 进行通信正常,为此走了一点坑,下面直接说解决方案吧
1 贴重点,如下图红框处所示(一开始我自己也没有注意到),STC8 发送端需要软件设置为强推挽输出模式或者外接3-5K的上拉电阻
2 好了,那么发送端设置为强推挽输出即可,接收端呢?设置为准双向即可。我这边用的是串口1,则设置如下,将如下设置添加到范例 uart 初始化函数最开头部分即可
P3M0 = 0xFE; //TX 设置强挽推,RX设置准双向
P3M1 = 0x00;
3 有个疑问为什么波特率设为 9600 时,不用做如上 IO 配置也可正常输出数据呢?这个对于不了解的新手,若是一开始 9600 通信成功后,再排查 115200 波特率通信问题岂不是很坑了。其次范例程序既然是以 115200 波特率通信做demo,那么应该在 uart 初始化函数上就加上 IO 的配置,要不然很容易让新手出现115200 输出乱码,或者RX配错,进不了接收中断