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

2019-12-20 21:46发布

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

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

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

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

我看手册上说STM32的串口有总线闲时中断,不知道这个是什么状况,可否利用一下呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
dreampet
1楼-- · 2019-12-23 22:34
伍师傅32 发表于 2015-2-15 13:50
用“ ”加状态机来处理感觉是很低效的,因为相当于对每一次接收都需要处理,不过这在没有DMA的方式下 ...

需不需要每次接收都处理只取决于底层串口驱动。
wozai2513
2楼-- · 2019-12-24 02:17
之前用过 和 ,感觉还好。
haso2007
3楼-- · 2019-12-24 04:05
DMA+空闲中断   感觉很好用,以前都是用 ,只做小数据命令传输。

mark一下,技术讨论贴。收藏了。。。
mail_cj
4楼-- · 2019-12-24 04:34
大家好,我的问题是:1)使用“ ”来判断结束的话,如果“ ”标志在传输的过程中丢失了,岂不是死等待了?  2)使用接收字符的个数来判断是否一帧结束,如果传输过程中信号被干扰少了几个字符,同样会死等待呀?  这样的话用定时器帮助进行判断应该是必须的吧?能用其他方法解决吗?恳请大家指点一下高效的方法?

一周热门 更多>