芯片平台: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的问题,
继续找,终于发现有人指出是默认堆栈不是八字节对齐,然后解决了···