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

2019-07-14 16:12发布

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

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

不知道这是哪方面的问题,求助~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
cauzhxj
1楼-- · 2019-07-14 17:29
tyewybvwe 发表于 2018-11-8 16:30
优化级别?是否在中断中使用FLOAT变量?如果使用,注意变量定义加上volaitile 修饰符

没有开优化.
中断内没有float变量.
cauzhxj
2楼-- · 2019-07-14 21:55
把问题描述更清楚点,系统时钟是1s的timer15中断做的.
串口中断发送,开启的是TXEIE中断,发送一个byte进入一次.
tianyou15
3楼-- · 2019-07-15 00:24
 精彩回答 2  元偷偷看……
lfy1980
4楼-- · 2019-07-15 04:36
关注一下这个问题
cmh20
5楼-- · 2019-07-15 09:23
cauzhxj
6楼-- · 2019-07-15 14:13
tianyou15 发表于 2018-11-8 17:13
是不是重入问题

串口波特率设置的是115200.
大概100us进入一次中断.
之前没有浮点运算任务的时候不会出问题.

一周热门 更多>