请选择 进入手机版 | 继续访问电脑版
查看: 3933|回复: 7

[分享] 浮点数如何保存到EEPROM 或者FLASH当中~

[复制链接]
  • TA的每日心情
    开心
    2024-5-14 16:34
  • 签到天数: 628 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1629

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4437

    热心会员

    最后登录
    2024-5-16
    发表于 2021-12-1 15:00:49 | 显示全部楼层 |阅读模式
    浮点数如何保存到EEPROM 或者FLASH当中~我们知道浮点数占四个字节,直接移位,发现得到的char型是0,看来这个方法不可行。

    最近写程序遇到这个,很多做法是把浮点数放大一定倍数,然后取证,然后保存到EEPROM 或者FLASH。读出来后,再除以之前的倍数。来获得浮点数~
    怎么办?搜索得知:
    这了有种更巧妙的思路,就是利用联合体。联合体看似与结构体相似,其不同之处在于结构体中每个变量占用不同的内存,而联合体共用一段内存,这就给保存浮点数提供了极大的便利。:

    比如我要保存一个浮点数a,我定义一个联合体
    union
    {
      float x;
      uchar s[4];
    }F32_Sep;
    然后把a的值赋给F32_Sep.x,这样一来其实s[0]对应了浮点数的最高位,s[3]对应其最低位,因此,保存到EEPROM中只需将s[0]~s[3]即可。


    这种方法甚至可以保存符号~
    读取时,先把读取的字节依次保存到S[0]~S[3].然后直接应用把F32_Sep.x赋给要操作的浮点变量即可~





    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-8 16:43
  • 签到天数: 299 天

    连续签到: 1 天

    [LV.8]以坛为家I

    3654

    主题

    7188

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    36846
    最后登录
    2025-2-19
    发表于 2021-12-1 16:06:43 | 显示全部楼层
    点赞
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 21:43
  • 签到天数: 1719 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    110647
    最后登录
    2025-2-18
    发表于 2021-12-1 17:25:09 | 显示全部楼层
    嗯,这种方法适用于需要存取不同格式数据,不过需要注意大小端字序的问题。 TS1 - 副本 (3).jpg TS1 - 副本 (2).jpg TS1 - 副本 (4).jpg TS1 - 副本 (5).jpg TS1 - 副本 (8).jpg TS1 - 副本 (9).jpg TS1 - 副本 (6).jpg TS1 - 副本 (7).jpg TS1 - 副本 (10).jpg TS1.jpg
    另外一种方法就是使用强制指针转换。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 21:43
  • 签到天数: 1719 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    110647
    最后登录
    2025-2-18
    发表于 2021-12-1 17:26:06 | 显示全部楼层
    看样子楼主是硬件大佬,程序写的相对少一些?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:58
  • 签到天数: 1443 天

    连续签到: 2 天

    [LV.10]以坛为家III

    95

    主题

    4546

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9748
    最后登录
    2025-2-18
    发表于 2021-12-1 18:29:34 | 显示全部楼层
    直接保存浮点数所丰的内存内容。
    按地址字节保存,回读后再强制类型转换。
    和楼上说的一样,只是浮点数没有大小端
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-14 16:34
  • 签到天数: 628 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1629

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4437

    热心会员

    最后登录
    2024-5-16
     楼主| 发表于 2021-12-3 14:15:33 | 显示全部楼层
    stm1024 发表于 2021-12-1 17:26
    看样子楼主是硬件大佬,程序写的相对少一些?

    大佬,给小弟一个面子,不要再说了。我再也不敢班门弄斧了。我再也不发这些文章了。
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 21:43
  • 签到天数: 1719 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    110647
    最后登录
    2025-2-18
    发表于 2021-12-3 14:35:03 | 显示全部楼层
    胤幻1988 发表于 2021-12-3 14:15
    大佬,给小弟一个面子,不要再说了。我再也不敢班门弄斧了。我再也不发这些文章了。 ...

    这么说就见外了,你画板子的实力可是有目共睹的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:58
  • 签到天数: 1443 天

    连续签到: 2 天

    [LV.10]以坛为家III

    95

    主题

    4546

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9748
    最后登录
    2025-2-18
    发表于 2021-12-6 16:06:33 | 显示全部楼层
    果然乐趣都在回复里
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-2-19 22:31 , Processed in 0.116368 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表