nigel1983 发表于 2020-7-30 16:45:30

stm32 l4 浮点运算出错

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

发表于 2020-7-30 17:16:49

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

lebment 发表于 2020-7-30 17:18:57

史诗级错误,没见过

nigel1983 发表于 2020-7-31 06:44:17

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

laidaihua 发表于 2020-8-3 02:29:06

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

butterflyspring 发表于 2020-8-13 12:18:57

项目配置时的优化等级是否有影响?
页: [1]
查看完整版本: stm32 l4 浮点运算出错