大家都是用什么方式判断串口接收一段数据结束的呢

2019-12-20 21:46发布

在使用GSM模块的时候,需要通过串口与模块进行通信。

这其中既有命令反馈的接收,也有通信数据的接收,它们的数据长度和接收的延迟都不一样。

我目前的做法是:串口接收到第一个数据的时候开始计时,如果接收到下一个数据则将计时清零,如果超时则判别一段数据接收完毕

我感觉这样做的效率有点低,好像无法利用DMA,不知道大家有什么好的方式呢?

我看手册上说STM32的串口有总线闲时中断,不知道这个是什么状况,可否利用一下呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
Appcat
1楼-- · 2019-12-21 02:25
AT指令都是0x0d0x0a结束的行,按行来处理。
伍师傅32
2楼-- · 2019-12-21 07:40
Appcat 发表于 2015-2-10 00:37
AT指令都是0x0d0x0a结束的行,按行来处理。

如果是通信的数据的话,它其中就可能包含着0x0D 0x0A
Appcat
3楼-- · 2019-12-21 09:12
所有模块都有转码模式或者指定长度模式来完全绕开这个问题。仔细去翻指令手册。
jzhang123
4楼-- · 2019-12-21 13:11
 精彩回答 2  元偷偷看……
fengchi
5楼-- · 2019-12-21 14:55
空闲中断+DMA,如果是F0系列可以是超时中断+DMA,已经验证过,好用
lovelywwei
6楼-- · 2019-12-21 17:12
stm32可以利用总线空闲中断+DMA的方式接收不定长数据,之前一个项目就是这样用的,很方便。楼主在坛里搜下,记得有的。

一周热门 更多>