打印
[应用相关]

str912 跑ucosii 浮点异常

[复制链接]
2450|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
whredmaple|  楼主 | 2009-3-3 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义一个浮点数,有时候输出居然是0.000000
大家碰到过这个问题吗?
沙发
香水城| | 2009-3-3 12:36 | 只看该作者

浮点运算的问题与编译器有关

使用特权

评论回复
板凳
whredmaple|  楼主 | 2009-3-3 12:45 | 只看该作者

我的版本Realview MDK 3.20

有时候只是多定义了一个变量,他的浮点就挂掉了,输出全是0.00000

使用特权

评论回复
地板
mohanwei| | 2009-3-3 12:59 | 只看该作者

程序有bug

使用特权

评论回复
5
whredmaple|  楼主 | 2009-3-3 16:57 | 只看该作者

程序bug,会影响到浮点变量的输出吗

程序bug,会影响到浮点变量的输出吗?
能不能举例说明?

使用特权

评论回复
6
mohanwei| | 2009-3-3 17:10 | 只看该作者

用C一不小心是很常见的,例如

void output_float(float f)
{
   uchar buff[6];
   float f_temp=f;
   ……
   for(i=0;i<10;i++)
   {
       buff=0;
   }
   ……
}

使用特权

评论回复
7
vimman| | 2009-3-3 21:06 | 只看该作者

跟任务堆栈对齐有关

这个问题,我07年用LPC2000跑uc/OS-II也碰见过,用MDK浮点数通过sprintf转换输出就会成为0.000,但是跟踪到库里面的汇编代码,实在无能为力查到哪里的问题。后来,把任务堆栈8对齐就正常了。任务堆栈创建时*stk--,那几句如果不是减了偶数次就会出现这个问题,我对比过。你可以查一下。我怀疑跟库代码使用8对齐的堆栈有关,具体原因讲不清楚。

使用特权

评论回复
8
whredmaple|  楼主 | 2009-3-10 12:33 | 只看该作者

现在还是总碰到这个问题

知道原因的继续讨论

使用特权

评论回复
9
vimman| | 2009-3-11 17:24 | 只看该作者

你把你任务堆栈创建的代码贴出来

把stackTop减去1试试,估计就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

69

帖子

0

粉丝