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

【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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版