你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如果可能,别再用中断接收串口数据了

[复制链接]
lusonghua 提问时间:2015-6-10 16:51 /
阅读主题, 点击返回1楼
收藏 1 评论31 发布时间:2015-6-10 16:51
31个回答
lusonghua 回答时间:2015-6-11 08:53:21
creep 发表于 2015-6-10 17:33
如果接收数据很多的话,频繁的中断的确开销很大。
既然用DMA了,为何不用串口空闲中断+DMA呢,这就不用频繁 ...

串口空闲中断,什么时候串口有空闲呢。应该保证必须保证串口空闲中断发出之前buffer没满。
lusonghua 回答时间:2015-6-11 08:55:29
我的方法是查询DMA状态,DMA自行完成RingBuffer的功能,且无限。
当然,整个程序必须没有阻塞,或者阻塞的时间保证串口通讯肯定不会“溢出”Buffer。
lusonghua 回答时间:2015-6-11 08:58:46
条条大道通罗马,只是给出使用中断外的另一种解决方法,没有别的意思哈。
中断也没什么不好的,但一般情况下会有更需要中断的地方。
串口接收这种事情留给空闲时间即可。
回答时间:2015-6-11 09:01:57
每个人的用法不一样,目的一样,只不过走的路不同。
qiu-368230 回答时间:2015-6-11 09:13:00
中断触发呢,
creep 回答时间:2015-6-11 09:19:28
本帖最后由 creep 于 2015-6-11 09:20 编辑
lusonghua 发表于 2015-6-11 08:53
串口空闲中断,什么时候串口有空闲呢。应该保证必须保证串口空闲中断发出之前buffer没满。 ...

如果设置了串口空闲中断,那么2帧发送数据之间的间隔就会产出一次串口空闲中断。
至于buff的大小就要看你发送的数据一帧有多大了,合理设置即可。
stary666 回答时间:2015-6-11 09:33:33
具体情况,具体分析
HenryChen 回答时间:2015-6-11 10:15:10
学习中。。。。
moyanming2013 回答时间:2015-6-11 16:52:54
lusonghua 发表于 2015-6-11 08:51
没有查询串口,是查询DMA的状态,DMA的设置自行完成了RingBuffer的功能。
串口接收的缓冲长度决定了读取R ...

那“查询DMA的状态”是否也会一直在占用CPU啊?
dsjsjf 回答时间:2015-6-11 22:10:21
creep 发表于 2015-6-10 23:25
这应该是串口接收数据比较好的方法之一的,中断的方法和这个没法比。

我之前都是开一段缓存,中断接收了就往里存,然后别的程序再从缓存里取了解析

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版