OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9377|回复: 2

怎样把浮点数存EEPROM,然后还原

[复制链接]

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2012-10-16
在线时间
9 小时
发表于 2012-10-19 09:06:27 | 显示全部楼层 |阅读模式
大家好,我用的是STVD的编译器,单片机是STM8,我想把一个浮点数存到EEPROM中,下次又取出来这个浮点数,不知是怎么操作,网上查了一些资料,有如下几种方法
    1:用扩大倍数的方法,
    2:用联合体,
    3:用指针的方式
请大家告诉我2和3的方法在STVD编译环境下具体是怎么实现的,在此先谢谢呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-19 10:38:22 | 显示全部楼层
回复【楼主位】seeker2010:
---------------------------------
用鸡奸法。
简单方便。
你只需要提供2个函数:
1,从指定地址开始读取指定长度(字节)数据的函数。
2,从指定地址开始写入指定长度(字节)数据的函数。
有了这两个函数,任何类型/结构体/数组的存储于读取都可以鸡奸法了。
下面这就是鸡奸法:
//VS10XX数据保存在:SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings)之后
//读取VS10XX数据
//vs10xxdev:VS10XX数据
void vs10xx_read_para(_vs10xx_obj * vs10xxdev)
{
AT24CXX_Read(SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings),(u8*)vs10xxdev,sizeof(_vs10xx_obj));
}
//写入VS10XX数据
//vs10xxdev:VS10XX数据
void vs10xx_save_para(_vs10xx_obj * vs10xxdev)
{    
    OS_CPU_SR cpu_sr=0;
OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) 
AT24CXX_Write(SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings),(u8*)vs10xxdev,sizeof(_vs10xx_obj));
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

27

主题

148

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
276
金钱
276
注册时间
2012-7-25
在线时间
0 小时
发表于 2012-10-19 09:16:31 | 显示全部楼层
回复【楼主位】seeker2010:
---------------------------------
uint8 *pdata;
void *p;
uint8 data[4];
float fdata;
pdata = data;

//数据拆分
p = &fdata;
*(pdata + 0) = *((uint8 *)p + 0); 
*(pdata + 1) = *((uint8 *)p + 1);
*(pdata + 2) = *((uint8 *)p + 2); 
*(pdata + 3) = *((uint8 *)p + 3); 


//数据还原
*((uint8 *)p + 0) = *(pdata + 0); 
*((uint8 *)p + 1) = *(pdata + 1); 
*((uint8 *)p + 2) = *(pdata + 2); 
*((uint8 *)p + 3) = *(pdata + 3); 


这个是单精度浮点数即float的操作,其为4字节。
若是double则为8字节,续上即可。
只要存储data[]中数据。






回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 11:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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