| 最近将裸机上的程序移植到uc/os ii中,其中有将int16_t类型数据强转为double类型,但是打印显示转后全为 0.000,查了很久,终于解决。 在裸机上一切正常,但是在uc/os ii中就有问题,因此可以初步判断是uc/os中的问题。这时候查uc/os转为浮点后有问题,就能找到答案。 原来是因为uc/os中的用户堆栈没有八字节对齐的原因,在裸机中运行程序时,系统默认堆栈是八字节对齐的,到uc/os中则不会这样。所以将用户堆栈八字节对齐就可以了。 我在keil MDK4.6环境下开发,在用户堆栈前加入__align(8) 关键字即解决了问题。
|
| 欢迎光临 迅维网 (https://www.chinafix.com/) | Powered by Discuz! X3.4 |