当前位置: 代码迷 >> 单片机 >> struct 怎么存储在 Flash里
  详细解决方案

struct 怎么存储在 Flash里

热度:439   发布时间:2016-04-28 14:48:52.0
struct 怎样存储在 Flash里?


typedef struct
{
UINT32 D;
UCHAR E[8];          
}DESCRIPTOR;

typedef struct
{
BOOL  A;
float  B;
UCHAR C;
DESCRIPTOR ter[5];
}UNIT_INFO;


因为有浮点型的结构体,怎么存在EEPROM里?

memcpy();//将结构体copy到一个UCHAR 数组再存入EEPROM可行吗?

------解决思路----------------------
没关系的,你就用指针存进去

UNIT_INFO temp;
WriteEEProm(addr_dec,addr_rom,(uchar*)&temp,sizeof(temp);

//读的时候用指针读就可以了
ReadEEProm(addr_dec,addr_rom,(uchar*)&temp,sizeof(temp);


因为读写都是同一个工程环境,所以不用考虑对齐以及float的结构的.
和外界交流时才要考虑这些,对齐,大小段,基本数据长度等因素


------解决思路----------------------
引用:
Quote: 引用:

可以直接使用memcpy函数 

网上说编译器优化对齐,结构体的地址不连续。
memcpy会取到不正确的数据

不用考虑 

因为读写是固定的 比如float是4个字节
  相关解决方案