浮点计算问题
关于NXP S32K144的浮点计算,函数计算没有问题,但是返回后数值就将float的值转换为int的值。
最后的原因就是因为函数没有声明,造成编译器认为这个函数是int型,导致float的值错了。

float add(void)
{
float tmp;
// tmp = (float)(Second2Us * Second2Min / (Hall_CH0.Period * HALL_IC1_Time *
HALL_POLES));
float a =1.1;
float b = 2.1;
tmp = a + b;
return (float)tmp;
}

返回后的值speed=1

static float speed[5] = {0};
speed[4] = add();

主要是汇编反馈的问题

这句话就说明需要float转int,再int转float型
声明后的汇编语言

没有r0就说明没有转换的过程

需要对add函数进行声明

float add(void);

其中浮点的配置中有几个地方需要记录

另外,看看有没有生效的方式是看build的时候有没有带入相关命令

Invoking: Standard S32DS C Compiler
arm-none-eabi-gcc "@Generated_Code/BLDC_FLASH_SPI.args" -MMD -MP -
MF"Generated_Code/trgmux1.d" -MT"Generated_Code/trgmux1.o" -o
"Generated_Code/trgmux1.o" "../Generated_Code/trgmux1.c"
Finished building: ../Generated_Code/pdb0.c 是不是还没有

其中需要关注一下,在args的文件中需要有相应的编译命令

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐