STM32F4x,UCOSII, 浮点运算异常,printf打印浮点异常的解决办法

芯片平台:STM32F405,

系统:UCCOSII, keil MDK

问题描述:任务中 进行浮点运算,然后printf打印结果,发现是000或其他异常值。

解决办法:

在任务堆栈声明前面加入强制八字节对齐命令,如下:

//OS_STK UART5_REC_TASK_STK[UART5_REC_STK_SIZE];
__align(8) static OS_STK UART5_REC_TASK_STK[UART5_REC_STK_SIZE];

==============================

解决过程,

先以为是STM32F05,没有开启FPU浮点运算,(确实没开启),但找了半天也没正确的开启。。

然后跑裸机程序,浮点运算及printf正常。应该是ucosII的问题,

继续找,终于发现有人指出是默认堆栈不是八字节对齐,然后解决了···

参考链接:keil c语言浮点数,Keil MDK浮点数支持不正常的解决方案_影子的覆盖的博客-CSDN博客

你可能感兴趣的:(stm32,单片机,嵌入式硬件)