久芯网

stm32 l4 浮点运算出错

avatar nigel1983 提问时间: 2023-09-25 08:53:05 / 未解决
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 ,有点怪

但把函数改为stm32 l4 浮点运算出错 [相关图片]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

如需获得 stm32 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

5个回答
  • avatar 废鱼
    回答时间: 2023-09-25 09:25:30

    应该是写法的问题,如果加个中间处理是不是可以解决这个问题? float a; a=f0+f1; return a;

  • avatar lebment
    回答时间: 2023-09-25 09:56:27

    史诗级错误,没见过

  • avatar nigel1983
    回答时间: 2023-09-25 10:17:41

    又测试了一下,分别用两块板子 ,STM32L476G-DISCOVERY 和 STM32 NUCLEO-L-496ZG. 496这块依旧出错,但476这块居然特么正常,这是什么鬼?

  • avatar laidaihua
    回答时间: 2023-09-25 10:45:09

    看来是你没贴出来的那一部分程序有问题。

  • avatar butterflyspring
    回答时间: 2023-09-25 11:06:01

    项目配置时的优化等级是否有影响?

会员中心 微信客服
客服
回到顶部