找回密码
 立即注册
查看: 1510|回复: 22

关于STC EEPROM 读写小数点数据的问题

[复制链接]
  • TA的每日心情
    奋斗
    昨天 15:28
  • 签到天数: 175 天

    [LV.7]常住居民III

    15

    主题

    52

    回帖

    964

    积分

    高级会员

    积分
    964
    发表于 2023-10-1 11:03:05 | 显示全部楼层 |阅读模式
    关于STC  EEPROM 读写小数点数据的问题:
    IAP_DATA  这个好像只能字节类型,无符号char型,
    如果我要读写带小数的数据怎么办

    请高手帮忙解读一下,谢谢了,顺祝大家节日快乐!!!

    回复 送花

    使用道具 举报

    该用户从未签到

    640

    主题

    1万

    回帖

    1万

    积分

    管理员

    积分
    15687
    发表于 2023-10-1 11:12:49 | 显示全部楼层
    IAP_DATA 这个寄存器是8位的,里面放啥 ?
    ===就放 0x00  ~ 0xff
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    640

    主题

    1万

    回帖

    1万

    积分

    管理员

    积分
    15687
    发表于 2023-10-1 11:13:38 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    640

    主题

    1万

    回帖

    1万

    积分

    管理员

    积分
    15687
    发表于 2023-10-1 11:16:07 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 15:28
  • 签到天数: 175 天

    [LV.7]常住居民III

    15

    主题

    52

    回帖

    964

    积分

    高级会员

    积分
    964
     楼主| 发表于 2023-10-1 17:17:36 | 显示全部楼层
    只能放0--255的数,比如我要放超256就不行,还有放比如说10.2这个带小数点的也不行
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    640

    主题

    1万

    回帖

    1万

    积分

    管理员

    积分
    15687
    发表于 2023-10-1 17:47:18 | 显示全部楼层
    自己定义转换格式存放
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 341 天

    [LV.8]以坛为家I

    9

    主题

    1012

    回帖

    4025

    积分

    论坛元老

    积分
    4025
    发表于 2023-10-1 19:20:54 | 显示全部楼层
    在EEPROM中保存浮点数的方法
    任何定的类(数组、图像、浮点数、音乐……)都是按字节存放的,读取也是按字节读出的。
    要点是(以图像为例):如何编码的,就如何解码。
    也即你缺少(XX格式,如浮点数)编码的知识,当然就不知道如何解码了。

    保存一个16位数据,分两个字节写入即可,32位的数(长整形或浮点数)就要分4个字节写入。
    浮点数(实数)长度32位,用位移的方式拆分成4个字节存入eeprom,读取后按存入时的拆分顺序还原。对于eeprom存储器单元而言,存入的只是一个字节的数据。与数据的类型无关。

    用union联合体转换或指针操作。你这样移位可以直接用union联合体代替,不需要移位。
    一般我会这样定义:

    typedef union
    {
        float value1;
        unsigned char value2[4];
    } pValue;

    存储的时候调用value2,其他时候用value1
    pValue pVal;

    pVal.value1 = 10.3;

    IapProgram(0x0000,pVal.value2[0]);
    IapProgram(0x0001,pVal.value2[1]);
    IapProgram(0x0002,pVal.value2[2]);
    IapProgram(0x0003,pVal.value2[3]);


    回复 支持 3 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 15:28
  • 签到天数: 175 天

    [LV.7]常住居民III

    15

    主题

    52

    回帖

    964

    积分

    高级会员

    积分
    964
     楼主| 发表于 2023-10-3 10:53:15 | 显示全部楼层
    angmall 发表于 2023-10-1 19:20
    在EEPROM中保存浮点数的方法
    任何定的类(数组、图像、浮点数、音乐……)都是按字节存放的,读取也是按字 ...

    谢谢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 215 天

    [LV.7]常住居民III

    29

    主题

    707

    回帖

    2679

    积分

    荣誉版主

    积分
    2679
    发表于 2023-10-3 14:40:11 | 显示全部楼层
    你 搞清楚 浮点数(小数)在内存中是怎么存储的



    存放在eeprom和  存放在内存中是一样的


    就是连续的四个  字节   32位


    截图202310031438071127.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 21:20
  • 签到天数: 67 天

    [LV.6]常住居民II

    0

    主题

    35

    回帖

    772

    积分

    高级会员

    积分
    772
    发表于 2023-10-7 15:50:48 | 显示全部楼层
    学习了。
    回复 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-11-1 08:01 , Processed in 0.089022 second(s), 83 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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