IAR 中eeprom的访问(如何将一个float型的数据存入eeprom)
我是单片机新手,在应用中使用ATmega128单片机,IAR编程环境,程序中需要使用eeprom存储数据
如何将一个float型的数据存入eeprom
__EEPUT(,)好像只能将一个字节的数据存入,
怎么能读出该float型数据并还原为原始数据呢?
谢谢大家了 不用IAR的库!自己写就行了吧! float 型转 int 型,自己确定一个精度,然后转到 long int等,自定规则就可以存了。
读取一样的,按照自定的规则,读取多个字节然后还原就行了。
例如,精度 到0.1的浮点数 120.1 ,转为 1201 ,变成两个字节存入EEPROM,读取的时候除10 就可以得到想要的数值了。 谢谢2楼,我现在已经这样做了! 把folat当做2进制数直接存储到eeprom 直接定义:
__no_init__eepromfloat eeprom_b1; union
{
float a;
unsigned char b; //根据实际修改
}c;
读 存 c.b--c.b
使用c.a; 高人!!! mark jihao yeah. Using union is the best approach, if your compiler doesn't support eeprom qualifier. union
{
float a;
unsigned char b; //根据实际修改
}c;
读 存 c.b--c.b
使用c.a;
存f的时候:
c.a = f;
memorysave(addr0,c.b);
memorysave(addr1,c.b);
memorysave(addr2,c.b);
memorysave(addr3,c.b);
读f的时候:
c.b = memoryget(addr0);
c.b = memoryget(addr1);
c.b = memoryget(addr2);
c.b = memoryget(addr3);
f = c.a; zyw19987 发表于 2012-4-10 10:40
union
{
float a;
受益了,谢谢。仔细想想还能在union中放struct zyw19987 发表于 2012-4-10 10:40
union
{
float a;
经验不足还是不行啊! yidian16 发表于 2010-6-21 13:21
**** 作者被禁止或删除 内容自动屏蔽 ****
牛逼 这个共用体的使用真牛逼 yidian16 发表于 2010-6-21 13:21
**** 作者被禁止或删除 内容自动屏蔽 ****
牛人,顶一个。
页:
[1]