搜索
bottom↓
回复: 15

IAR 中eeprom的访问(如何将一个float型的数据存入eeprom)

[复制链接]

出0入0汤圆

发表于 2010-6-21 09:45:18 | 显示全部楼层 |阅读模式
我是单片机新手,在应用中使用ATmega128单片机,IAR编程环境,

  程序中需要使用eeprom存储数据

  如何将一个float型的数据存入eeprom

__EEPUT(,)好像只能将一个字节的数据存入,

  怎么能读出该float型数据并还原为原始数据呢?

   谢谢大家了

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-6-21 09:49:19 | 显示全部楼层
不用IAR的库!自己写就行了吧!

出0入0汤圆

发表于 2010-6-21 10:44:24 | 显示全部楼层
float 型转 int 型,自己确定一个精度,然后转到 long int等,自定规则就可以存了。
读取一样的,按照自定的规则,读取多个字节然后还原就行了。

例如,精度 到0.1的浮点数 120.1 ,转为 1201 ,变成两个字节存入EEPROM,读取的时候除10 就可以得到想要的数值了。

出0入0汤圆

 楼主| 发表于 2010-6-21 10:56:40 | 显示全部楼层
谢谢2楼,我现在已经这样做了!

出0入0汤圆

发表于 2010-6-21 11:13:05 | 显示全部楼层
把folat当做2进制数直接存储到eeprom

出0入0汤圆

发表于 2010-6-21 11:18:45 | 显示全部楼层
直接定义:
__no_init  __eeprom  float eeprom_b1;

出0入0汤圆

发表于 2010-6-21 13:21:17 | 显示全部楼层
union
{
  float a;
  unsigned char b[4]; //根据实际修改
}c;
读 存 c.b[0]--c.b[3]
使用  c.a;

出0入0汤圆

发表于 2010-7-12 17:35:32 | 显示全部楼层
高人!!!

出0入0汤圆

发表于 2010-7-12 22:40:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-12 23:36:00 | 显示全部楼层
jihao

出0入0汤圆

发表于 2010-7-13 02:21:01 | 显示全部楼层
yeah. Using union is the best approach, if your compiler doesn't support eeprom qualifier.

出0入0汤圆

发表于 2012-4-10 10:40:53 | 显示全部楼层
union
{
  float a;
  unsigned char b[4]; //根据实际修改
}c;
读 存 c.b[0]--c.b[3]
使用  c.a;
存f的时候:
c.a = f;
memorysave(addr0,  c.b[0]);
memorysave(addr1,  c.b[1]);
memorysave(addr2,  c.b[2]);
memorysave(addr3,  c.b[3]);

读f的时候:

c.b[0] = memoryget(addr0);
c.b[1] = memoryget(addr1);
c.b[2] = memoryget(addr2);
c.b[3] = memoryget(addr3);

f = c.a;

出0入0汤圆

发表于 2013-12-27 14:37:56 | 显示全部楼层

受益了,谢谢。仔细想想还能在union中放struct

出0入0汤圆

发表于 2014-4-1 00:05:48 | 显示全部楼层

经验不足还是不行啊!

出0入0汤圆

发表于 2014-8-15 08:49:36 | 显示全部楼层
yidian16 发表于 2010-6-21 13:21
**** 作者被禁止或删除 内容自动屏蔽 ****

牛逼   这个共用体的使用  真牛逼

出0入0汤圆

发表于 2014-8-15 08:57:18 | 显示全部楼层
yidian16 发表于 2010-6-21 13:21
**** 作者被禁止或删除 内容自动屏蔽 ****

牛人,顶一个。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 19:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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