查看: 2046|回复: 7

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

[复制链接]
  • TA的每日心情

    2024-2-5 12:06
  • 签到天数: 627 天

    [LV.9]以坛为家II

    94

    主题

    1628

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4429

    热心会员

    最后登录
    2024-2-5
    发表于 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-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32004
    最后登录
    2024-4-9
    发表于 2021-12-1 16:06:43 | 显示全部楼层
    点赞
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92609
    最后登录
    2024-4-9
    发表于 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的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

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

    使用道具 举报

  • TA的每日心情

    2024-2-5 12:06
  • 签到天数: 627 天

    [LV.9]以坛为家II

    94

    主题

    1628

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4429

    热心会员

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

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

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-20 16:51 , Processed in 0.134814 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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