STM32 串口空闲中断的问题

2019-12-18 18:47发布

目前在做一款无线模块通信的设备,需要使用AT指令进行模块的初始化和数据的传输,在网上看到有用串口空闲中断来判断一帧数据,然后对这一帧数据进行处理;但是我有一个疑问,如果设置了模块有一个周期性的数据需要发送,然后我这边也会有AT指令发出,有没有可能数据会同时在一帧里面让STM32接收到数据,如果这样,那我就会漏掉一组数据,不知道有没有人测试过??或者有没有什么好的方式!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
23条回答
nzk123
2019-12-20 14:21
明白楼主意思,就是接收的数据有粘包,两包回复合在了一起了。首先,用空闲中断来判断一包结束这种方法并不可靠,用过很多设备,回复过来的数据根本就没法保证完全不断,你想想,设备总不可能只有1个发送中断吧,如果有多个中断,而且发送中断优先级不是最高,就有可能一包数据没有发完就产生了空闲。其次,最好的方法就是接收过来的数据按照空闲判断先放在接收缓存,然后再从接收缓存中一个字节一个字节取出解析,解析过程中必然会有帧头帧尾,这样就能保证一包数据不会分成两包而不被识别,同样也能解决两包数据粘包而不能被分开的情况。

一周热门 更多>