[应用相关] str912 跑ucosii 浮点异常

[复制链接]
3382|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

 楼主| whredmaple 发表于 2009-3-3 16:57 | 显示全部楼层

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

程序bug,会影响到浮点变量的输出吗?
能不能举例说明?
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;
   }
   ……
}
vimman 发表于 2009-3-3 21:06 | 显示全部楼层

跟任务堆栈对齐有关

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

现在还是总碰到这个问题

知道原因的继续讨论
vimman 发表于 2009-3-11 17:24 | 显示全部楼层

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

把stackTop减去1试试,估计就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

69

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部