STM32 串口空闲中断的问题

2019-12-18 18:47发布

目前在做一款无线模块通信的设备,需要使用AT指令进行模块的初始化和数据的传输,在网上看到有用串口空闲中断来判断一帧数据,然后对这一帧数据进行处理;但是我有一个疑问,如果设置了模块有一个周期性的数据需要发送,然后我这边也会有AT指令发出,有没有可能数据会同时在一帧里面让STM32接收到数据,如果这样,那我就会漏掉一组数据,不知道有没有人测试过??或者有没有什么好的方式!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
bobo89
1楼-- · 2019-12-19 17:36
zqf441775525 发表于 2018-9-3 16:07
有没有可能数据会同时在一帧里面让STM32接收到数据,如果这样,那我就会漏掉一组数据         最关键的一句 ...

就是说如果同时有两组数据从模块的串口发送出来,这个时候STM32的串口中断接收数据函数就有可能把他判断成一帧数据,这一帧数据我只能处理一次,而不是正常的处理两组数据,不知道这样解释懂了没?
bobo89
2楼-- · 2019-12-19 18:12
zchong 发表于 2018-9-3 17:34
为什么会漏掉?

因为我两组数据在一帧里面,之后判断一次,还有一次的数据不能判断,等于是漏掉了一组数据!
bobo89
3楼-- · 2019-12-19 21:01
efen 发表于 2018-9-3 17:27
你模块是周期性的,错开这个周期不就行了啦

但是有一些命令是事件型的,这个不好错开啊!
zqf441775525
4楼-- · 2019-12-20 00:26
应该会有你说的这种情况的,最好在空闲中断里判断接收到的数据长度,然后根据数据长度和数据的头尾标志位判断是纯粹的一帧数据还是两帧数据糅合到一起的。
liugu
5楼-- · 2019-12-20 05:19
 精彩回答 2  元偷偷看……
micyoco
6楼-- · 2019-12-20 07:16
串口是双工的,接收有缓存,不存在这个问题

一周热门 更多>