完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
最近在做一个项目.
整个任务是1.5ms的大循环,其中分成6个250us的小任务. 有几个小任务里面用到了几个float运算. 然后1.5ms大循环循环了1s之后,由串口中断发送一次系统时间. 现在发现的问题是: 每次只要用 串口中断发送这一条信息,就必然导致 浮点运算的值出错,全部变成了 1.#QNAN. 出错后,由于没有错误检测,程序其他的部分仍然正常运行,浮点相关部分就都没用了. 改成用阻塞式发送的话,不会出现浮点出错的问题,但是阻塞式发送,需要耗时1.48ms.这样的话,系统的大循环时间就变成差不多两倍了. 不知道这是哪方面的问题,求助~ |
|
相关推荐
41个回答
|
|
|
目前是用的DMA发送,串口中断接收. 会遇到DMA发送标记不清零的情况,是在DMA发送结束中断清零标记的,说明没有进入DMA发送结束中断. |
|
|
|
|
|
再查了下,可能还是由于 串口中断影响了float数据,只不过这次是接收数据中断影响了..
|
|
|
|
|
|
是这样的,
最开始,在DMA的TCIE中断里面清除发送标志,结果偶尔会进入不了中断. 后面改为USART的TCIE来判断发送是否完成,这样就可以正常的检测发送结束了. 然后,由于接收数据时中断导致float失效,float数据全为#QNAN.相关操作失效,感觉就像没有发送一样. |
|
|
|
|
|
|
|
|
|
|
|
这下又比较麻烦了.RX还要自行判断是否通信结束,网上看到可用idle中断来做.
|
|
|
|
|
|
偶尔可以正常接收和发送数据了.但是用DMA接收一样容易导致float死机.
|
|
|
|
|
|
DMA通信可以了.
接收发送都正常. 但是 float死机的情况比之前接收用 串口中断,发送用DMA更加严重了. 是什么导致的float #QNAN? DMA会占用数据总线. |
|
|
|
|
|
为何这种问题在F407上就没出现过.
|
|
|
|
|
|
接收的数据一多,程序就崩了.
|
|
|
|
|
|
难道要回到C程序,C++对于48MHz来说太奢侈了?
|
|
|
|
|
|
全部改成C代码后,程序正常了.
至少说明,48MHz单片机条件下,C的效率还是比C++高. 改C的过程中,似乎明白为什么库函数关于寄存器的操作都是用的结构体加指针,因为这样和C++的结构差不多,改起来也比较方便. 似乎以后可以先用C++开发,再转C优化. |
|
|
|
|
|
是不是你的串口收发栈溢出了,导致另外的任务栈乱掉了?
|
|
|
|
|
|
|
|
|
|
|
|
是不是中断函数与任务函数共享变量了?
在任务函数修改可能在中断函数使用的变量最好把中断临时关掉,注意中断关掉时间不要过长, __disable_irq(); __enable_irq(); |
|
|
|
|
|
双缓冲,不会有这个问题. |
|
|
|
|
|
方便的话可工程粘出来,研究下? c++不频烦的删除和创建对象效率不会比c差太多,没准是对象或指针没处理好造成的 |
|
|
|
|
|
目前问题已经规避了.
在C下面不会出现由于串口导致的float崩溃问题. 但是在更加高端的F407上面,即使用C++也没有发现float崩溃. DMA在C语言下面可能又不是一个好的选择.或许是自己用得还不习惯. 现在每10ms发送8个byte,接收还有float运算都能正常工作. |
|
|
|
|
|
没发现这种问题,一直做项目都是所有串口dma,用得双双的
|
|
|
|
|
|
现在每个大周期,1.5ms里面发送8个byte也没有问题,相当于用115200的波特率实现了53333的有效波特率.
如果没错的话,是可以发送16个byte没有问题的~ |
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 20:28 , Processed in 1.255030 second(s), Total 79, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2323