STM32F4+ucosii硬件浮点问题,计算出来的与printf出来的不一样。

2019-07-21 02:12发布


左边为仿真的值,为1.049999  右边串口调试的值。为-2.0.
用的是STM32F4+ucosii+FPU.
难到这样打印也会出错。出现过正确的情况,后又在另一个任务里加了点东西,就显示不正确了。
和字节对齐有关吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
augustedward
2019-07-21 13:00


值为1.04999995  转换成16进制后为0x3f866666,也就是R0;
断点设置在printf()前。单步调试后,发现在0x0801693c这一行,指令为R0的值逻辑左移23位后放入到R1中。
在不加FPU的情况下,R1的值变成了0x3FF,不知道怎么算出来的,执行下去,打印出来的值为1.05%,是正确的。
在加了FPU的情况下,R1的值变成了0x7F,这个和我算出来的一样,但执行下去,打印出来的值一直都为-2.0%,是错误的。

求大神解答。汇编不是很熟。想不通,同样的汇编代码,同样的R0。为什么在有FPU和没FPU的情况下得出两种结果。

一周热门 更多>