STM32
直播中

梅利号

9年用户 1503经验值
擅长:可编程逻辑
私信 关注
[问答]

stm32l4浮点运算出错怎么解决?

float fSum(float f0,float f1)
{
  return f0+f1;
}

void main()
{
    float s;
   s=fSum(0.1f,0.2f);
}

//以上代码同时在main.c中运行正常

如果将fSum函数放到其它c文件,再调用就变成0,中断进入监视发现传参时f0,f1已变成0 ,有点怪

但把函数改为fSum函数位于其它c文件)
void fSum(float* pf0,float* pf1,float* sum)
{
  (*sum)=(*pf0)+(*pf1);
}

//____________________________________
void main()
{
  float sum=0,f0=0.1,f1=0.2;
  fSum( f0, f1, sum);
}
这样不会出错,double类型的也是这个毛病。好怪,有人遇到过吗?怎么解决?请教!编译器IAR for Arm 8.30.1

回帖(1)

乔银栓

2024-4-11 14:47:06
应该是写法的问题,如果加个中间处理是不是可以解决这个问题?
float a;
a=f0+f1;
return a;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分