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

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

[复制链接]
andrewz 提问时间:2016-9-26 17:36 /
最近在做一个项目.
整个任务是1.5ms的大循环,其中分成6个250us的小任务.
有几个小任务里面用到了几个float运算.
然后1.5ms大循环循环了1s之后,由串口中断发送一次系统时间.
现在发现的问题是:
每次只要用 串口中断发送这一条信息,就必然导致 浮点运算的值出错,全部变成了 1.#QNAN.
出错后,由于没有错误检测,程序其他的部分仍然正常运行,浮点相关部分就都没用了.

改成用阻塞式发送的话,不会出现浮点出错的问题,但是阻塞式发送,需要耗时1.48ms.这样的话,系统的大循环时间就变成差不多两倍了.

不知道这是哪方面的问题,求助~
收藏 1 评论41 发布时间:2016-9-26 17:36

举报

41个回答
高二毛 回答时间:2016-9-26 17:38:27
优化级别?是否在中断中使用FLOAT变量?如果使用,注意变量定义加上volaitile 修饰符
andrewz 回答时间:2016-9-26 17:39:25
高二毛 发表于 2016-9-26 17:38
优化级别?是否在中断中使用FLOAT变量?如果使用,注意变量定义加上volaitile 修饰符
...

没有开优化.
中断内没有float变量.
andrewz 回答时间:2016-9-26 17:58:34
把问题描述更清楚点,系统时钟是1s的timer15中断做的.
串口中断发送,开启的是TXEIE中断,发送一个byte进入一次.
dsjsjf 回答时间:2016-9-26 19:01:47
是不是重入问题
sunnydevil 回答时间:2016-9-27 08:34:02
关注一下这个问题
zhangdaijin 回答时间:2016-9-27 08:44:52
andrewz 回答时间:2016-9-27 08:53:46
dsjsjf 发表于 2016-9-26 19:01
是不是重入问题

串口波特率设置的是115200.
大概100us进入一次中断.
之前没有浮点运算任务的时候不会出问题.
风子 回答时间:2016-9-27 09:08:27
用DMA发送吧

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

andrewz 回答时间:2016-9-27 09:17:06


这么复杂,还要用DMA...
DMA不是会占用数据总线吗?
12345下一页

所属标签

相似问题

官网相关资源

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