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

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

[复制链接]
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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版