NXP MCU 技术论坛
直播中

蔡婷

7年用户 224经验值
私信 关注
[问答]

实现STM32串口的方案

STM32串口实现的两个方案

回帖(2)

陈浩

2021-3-8 10:09:19
  总结一下串口232,422,485
  串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”, 3V~ 15V逻辑“0”。
  串口422:可双向传输,4线全双工,2线单工。
  串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端: 2V~ 6V逻辑“1”,-2V~-6V逻辑“0”,接收端: 200mV逻辑“1”,-200mV逻辑“0”。
举报

洪茗苞

2021-3-8 10:09:31
  对于串口的实现有以两个方案:
  方案一,和原子的《例说STM32》一样,首先接收,然后处理,没有消息验证处理,这样就会出现消息覆盖,消息出错后死机,无法明确区分命令,无法及时应答握手信号。方案二,借鉴uC/OSII的消息队列,进入中断服务函数之后,关闭中断,接收数据,如果没有数据接收,等待一段时间(时间和波特率有关)后开中断,出中断,然后在对接收到的数据进行处理,下面看代码:
  消息队列及其初始化函数:
  
  这样就把数据一次性全部存储下来了,剩下的就是对消息缓冲器message_buff[]中的消息进行处理了,这样就解决了消息覆盖,消息出错无法纠正的问题,至于消息怎么处理就是依据不同的需求不同的处理,另外注意,握手信号好用定时器中断。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分