管理员
  
- 积分
- 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(); //退出临界区(可以被中断打断)
} |
|