关于eeprom使用的几个问题

[复制链接]
694|12
手机看帖
扫描二维码
随时随地手机跟帖
hello_galaxy| | 2016-5-25 21:45 | 显示全部楼层
固定地址判断一个值,如果不是所需要的值,初始化,否则跳过

使用特权

评论回复
低八度的声线| | 2016-5-26 09:33 | 显示全部楼层
浮点型可以转换为整形存进去,浮点型好像无法直接存的

使用特权

评论回复
liwandong2007| | 2016-5-26 09:41 | 显示全部楼层
不能存浮点的。转化一下。即可。

使用特权

评论回复
lt1231| | 2016-5-26 17:46 | 显示全部楼层
liwandong2007 发表于 2016-5-26 09:41
不能存浮点的。转化一下。即可。

如何转化呢,我直接地址赋值是否可以呢

使用特权

评论回复
merry_zsp| | 2016-5-26 22:14 | 显示全部楼层
1.判断固定地址的值
2.浮点型转化为整形

使用特权

评论回复
hello牟| | 2016-5-27 09:59 | 显示全部楼层
以共用体分解float或者double类型数据为c字符类型数据。 可以用于eeprom(24c02)数据存取。

使用特权

评论回复
大白农| | 2016-5-28 15:02 | 显示全部楼层
比如我要保存一个浮点数a,我定义一个联合体
union
{
  float x;
  uchar s[4];
}F32_Sep;
然后把a的值赋给F32_Sep.x,这样一来其实s[0]对应了浮点数的最高位,s[3]对应其最低位,因此,保存到EEPROM中只需将s[0]~s[3]即可。

使用特权

评论回复
nobleliom| | 2016-5-28 21:14 | 显示全部楼层
强制类型转换。
比如你从EEROM读出来的是字节数组型式的
u8 buf[100];
定一个指针 u8 *p=NULL;
float a,b,c,d .....
p=buf;
a=*((float *)(p+4*0));
b=*((float *)(p+4*1));
c=*((float *)(p+4*2));
d=*((float *)(p+4*3));
....

以上是从EEROM读出来的处理

用联合体
union _exch
{
char data[4];
flaot  result;
}test;
tese.result=浮点数;
然后把data[0],data[1],data[2],data[3],存入epprom
读出来时把数据一次放入data[0],data[1],data[2],data[3],  然后   k=tese.result;k就是需要的浮点数了
这个方法涉及到浮点数在内存里面的存储方式,楼主可以看一下

使用特权

评论回复
花落辞殇| | 2016-5-29 16:36 | 显示全部楼层
**法  浮点数*10000 存到eprom  取出来除10000

使用特权

评论回复
jp_chen| | 2016-5-29 23:23 | 显示全部楼层
一个浮点使用4个字节表示。 查询一下相关的转换方法,再把4个字节存到你指定的位置,用的时候读出来组合成浮点数即可。  不过这个比较繁琐,你可以把浮点的整数部分和小数部分分开存储,这样处理的对象就是整数了,用的时候再合并成浮点。  浮点数据的处理要注意一个精度的问题。

使用特权

评论回复
zhangyi3312| | 2016-5-31 14:34 | 显示全部楼层
把浮点数转换成字符串,存进去,取出来再把字符串转换成浮点数。

使用特权

评论回复
16号哨兵| | 2016-5-31 18:52 | 显示全部楼层
可以转换为字符串保存的,可是这样的话,占的内存就很多了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

210

帖子

1

粉丝