统计
  • 建站日期:2021-03-10
  • 文章总数:11 篇
  • 评论总数:1 条
  • 分类总数:6 个
  • 最后更新:9月19日
文章 源码分享

自用atof函数分享

emer
首页 源码分享 正文
广告

单位开发的温湿度监测仪项目,用的STM32F030C8T6,64kb的flash空间,bootloader占用了2KB,配置信息和升级信息用了2kb,历史数据用了4KB,还得放两个APP,所以一个APP只有28kb的空间了,写的过程中,突然报空间不足了,只能优化代码了,想起来调用了的atof,感觉他应该很大,屏蔽调用后,直接节省出来1kb,所以还是自己写一个转换吧


因为程序还可能调用在模组驱动上,用的AT指令,空格比较多,所以一开始先过滤下空格信息,最多过滤5个,过滤结束后,开始转换,整数比较好转换,直接`val = val*10+*port-'0';`就好了,小数部分轮到哪位小数了存在变量temp中,每次转换完小数,让temp*0.1

//字符串转小数
double app_atof(const char* port)
{
    double val;
    double temp;
    bool int_part;      //转换整数部分
    int i;

    //过滤一下空格
    for(i = 0; i < 5; i++)
    {
        if(*port == ' ')
            port++;
        else
            break;
    }

    val = 0;
    int_part = true;
    while ((*port >= '0' && *port <= '9') || *port == '.')
    {
        if(*port == '.')
        {
            if(int_part == false)       //如果遇到第二个小数点,直接返回
                return val;

            //遇到小数点,开始转换小数部分
            int_part = false;   
            temp = 0.1;
            port++;
        }
        else
        {
            if(int_part)
            {
                val = val*10+*port-'0';
            }
            else
            {
                val = val + temp * (*port - '0');
                temp *= 0.1;
            }
            port++;
        }
    }
    return val;
}




下面截图是调用atof的代码大小和调用自己写的app_atof后的代码大小,节省出来1156个字节


自用atof函数分享
-电子爱好者
-第1
张图片


自用atof函数分享
-电子爱好者
-第2
张图片

收藏

扫描二维码,在手机上阅读

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

熊猫框架更新记录
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。

最新评论