ch32v003 编译符点运算,flash空间占用巨大

       ch32v003 编译符点运算,flash空间占用巨大.

代码如下,如果运算中加上*0.1,这一行代码要占用11%的flash空间。

 data=data+((T+128)-data2)*data3*0.1;

如果去掉*0.1. 代码空间减少11%的flash空间

 data=data+((T+128)-data2)*data3;


请问这是因为什么呢?是因为加入符点运算后,会编译 math文件么?

您好,首先两种写法都不会引入MATH库,那个需要显示的引用。因为003没有浮点扩展,所以会用软件处理,其次默认浮点常量是双精度型的,您可以按照下方图片去更改成单精度,另外你可以更两种不同情况下生成的lst文件去对比,如还有问题可以发送邮件到yangy@wch.cn。

image.png


我用这个:

void PrintFloat(float value)
{
    int tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;
    tmp = (int)value;
    tmp1=(int)((value-tmp)*10)%10;
    tmp2=(int)((value-tmp)*100)%10;
    tmp3=(int)((value-tmp)*1000)%10;
    tmp4=(int)((value-tmp)*10000)%10;
    tmp5=(int)((value-tmp)*100000)%10;
    tmp6=(int)((value-tmp)*1000000)%10;
    sprintf(message,"温度Temperature: %d.%d%d%d%d%d%d\r\n",tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6);
}



只有登录才能回复,可以选择微信账号登录