问题排查:
在使用音频算法的时候,我希望通过定浮点转换来对音频数据归一化。此时,我发现归一化以后的数据,在dma接收中断内部是正常的,一拿到任务中运行则会异常。
导致我开始怀疑是否处理不及时导致值变更过快。反反复复排查了很久。
由此我发现在运算时禁止上下文切换,和增加临界区能够解决此问题。
问题结果:
stm32 需要 主动配置enable fpu,不然会导致在浮点运算出入栈时,没有正常保存现场,导致浮点值异常。所以一定要在这里配置FPU。这也算是踩坑了。给自己做个记录,下次注意。
引用链接:
我两周就写了三行代码 - ARM Cortex A9 中断与浮点数运算、FPU 问题 - 嵌入式工程猫的博客
Using FreeRTOS on ARM Cortex-A9 Embedded Processors - FreeRTOS™