最近在做一个项目. 整个任务是1.5ms的大循环,其中分成6个250us的小任务. 有几个小任务里面用到了几个float运算. 然后1.5ms大循环循环了1s之后,由串口中断发送一次系统时间. 现在发现的问题是: 每次只要用 串口中断发送这一条信息,就必然导致 浮点运算的值出错,全部变成了 1.#QNAN. 出错后,由于没有错误检测,程序其他的部分仍然正常运行,浮点相关部分就都没用了. 改成用阻塞式发送的话,不会出现浮点出错的问题,但是阻塞式发送,需要耗时1.48ms.这样的话,系统的大循环时间就变成差不多两倍了. 不知道这是哪方面的问题,求助~ |
没有开优化.
中断内没有float变量.
串口中断发送,开启的是TXEIE中断,发送一个byte进入一次.
串口波特率设置的是115200.
大概100us进入一次中断.
之前没有浮点运算任务的时候不会出问题.
评分
查看全部评分
这么复杂,还要用DMA...
DMA不是会占用数据总线吗?