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

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

[复制链接]
lusonghua 提问时间:2015-6-10 16:51 /
阅读主题, 点击返回1楼
收藏 1 评论31 发布时间:2015-6-10 16:51
31个回答
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啊?
埃斯提爱慕 回答时间:2015-6-11 22:10:21
提示: 作者被禁止或删除 内容自动屏蔽
creep 回答时间:2015-6-11 22:48:33
dsjsjf 发表于 2015-6-11 22:10
我之前都是开一段缓存,中断接收了就往里存,然后别的程序再从缓存里取了解析 ...

你这样接收一个字节就要进入一次串口中断吧?
firebird213 回答时间:2015-6-12 09:49:34
主程序来不及处理,会被覆盖掉吧
天外之客 回答时间:2015-6-13 00:47:29
这也不是啥好办法,407这么快的速度,中断很快就运行完了,而且还能进行简单的包头包尾判断,如果没有什么开销的话用中断未尝不可,倒是发送数据需要用DMA,查询方式太恶心了,回头都改了。
小小超 回答时间:2015-6-13 08:39:58
DMA确实要简单点。
埃斯提爱慕 回答时间:2015-6-13 21:29:41
提示: 作者被禁止或删除 内容自动屏蔽
左岸右岸 回答时间:2015-6-14 11:21:27
学习学习
lusonghua 回答时间:2015-6-16 10:36:15
moyanming2013 发表于 2015-6-11 16:52
那“查询DMA的状态”是否也会一直在占用CPU啊?

怎么会“一直”呢,查询一下,有就收,没有就干别的事,函数就是Idle_Proc()。
用DMA+一段缓冲,可以放宽查询的时间间隔要求,而不是来一个字符中断一下地搞。
中断还是留给重要的事情。
如果软件任务简单用几个中断当然无所谓,但任务多了,如USB芯片、FPGA等等好多地方都要中断,而公司又明确不允许使用RTOS,那么...
每个程序任务的背景都不尽相同,我的代码也只是一种思路罢了。
Brady 回答时间:2015-6-16 11:22:57
這個方法還不錯
moyanming2013 回答时间:2015-6-16 11:25:40
lusonghua 发表于 2015-6-16 10:36
怎么会“一直”呢,查询一下,有就收,没有就干别的事,函数就是Idle_Proc()。
用DMA+一段缓冲,可以放宽 ...

嗯,看来DMA+查询确实有使用的场景。
如果要是数据多了DMA缓冲区够用么?
lusonghua 回答时间:2015-6-16 12:25:12
moyanming2013 发表于 2015-6-16 11:25
嗯,看来DMA+查询确实有使用的场景。
如果要是数据多了DMA缓冲区够用么? ...

考虑的不应该是数据多了或少了的问题,而是最“严酷”条件的问题,即如果UART带宽100%使用时,查询DMA状态的时间间隔问题。
因为UART是很慢的外设,给个一定长度的buffer,就有相当宽裕的容许间隔。只要保证在时间间隔内程序必定能够再次查询到DMA状态即可。这个对于一般的ARM都不成问题(如果这样都有问题,那真得考虑CPU选型了)。
当然,还是那句话,别阻塞。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版