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

【STM32F051K8U6】串口中断发送数据影响float运算.

[复制链接]
andrewz 提问时间:2016-9-26 17:36 /
阅读主题, 点击返回1楼
收藏 1 评论41 发布时间:2016-9-26 17:36
41个回答
andrewz 回答时间:2016-9-28 08:38:17

目前是用的DMA发送,串口中断接收.
会遇到DMA发送标记不清零的情况,是在DMA发送结束中断清零标记的,说明没有进入DMA发送结束中断.
andrewz 回答时间:2016-9-28 10:07:08
再查了下,可能还是由于 串口中断影响了float数据,只不过这次是接收数据中断影响了..
andrewz 回答时间:2016-9-28 10:17:59
是这样的,
最开始,在DMA的TCIE中断里面清除发送标志,结果偶尔会进入不了中断.
后面改为USART的TCIE来判断发送是否完成,这样就可以正常的检测发送结束了.

然后,由于接收数据时中断导致float失效,float数据全为#QNAN.相关操作失效,感觉就像没有发送一样.
andrewz 回答时间:2016-9-28 10:36:59
怀疑1s的timer15中断影响性能.删除之,#QNAN现象偶尔还有.
看来必须把RX也改为DMA.
andrewz 回答时间:2016-9-28 10:39:04
这下又比较麻烦了.RX还要自行判断是否通信结束,网上看到可用idle中断来做.
andrewz 回答时间:2016-9-28 14:14:50
偶尔可以正常接收和发送数据了.但是用DMA接收一样容易导致float死机.
andrewz 回答时间:2016-9-28 15:12:42
DMA通信可以了.

接收发送都正常.

但是 float死机的情况比之前接收用 串口中断,发送用DMA更加严重了.

是什么导致的float #QNAN?
DMA会占用数据总线.
andrewz 回答时间:2016-9-28 15:22:02
为何这种问题在F407上就没出现过.
andrewz 回答时间:2016-9-28 15:27:00
接收的数据一多,程序就崩了.
andrewz 回答时间:2016-9-28 15:43:23

难道要回到C程序,C++对于48MHz来说太奢侈了?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版