今天发了第二个帖子了,碰到F0存FLASH数据出现问题:
====================================
__packed typedef struct
{
u8 NeedUpdateFlag;
u8 VersionInf;
u32 PackTotalSize;
u16 PerUpdateSize;
u16 TotalPerIndex;
u8 CfgRCCCheck[2];
}UpdateCfgTypeDef;
__packed typedef struct
{
u16 LowVolValue;
u8 G_SenserEnStatus;
u8 Voice_CANEnStatus;
u8 DefaultCfg;
u8 Reserve;
}SysSetSaveTypeDef;
__packed typedef struct
{
UpdateCfgTypeDef UpdateCfgStruct;
SysSetSaveTypeDef SysSetCfgStruct;
}UserCfgSaveTypeDef;
================================================
声明UserCfgSaveTypeDef UserCfgSaveStruct;
然后利用原子的STMFLASH_Read(EEPROM_FLASH_BASE,(u16*)&UserCfgSaveStruct,sizeof(UserCfgSaveStruct)/2);
立马进入硬件错误中断。
但是去掉packed之后呢就没有问题了,但是字节写进去是错位的,读出来就不对了,所以一定要对齐使用。
F1系列没有这样的问题,我是直接从F1移植过来的,怎么办呢?求助......难道一个变量一个变量存进FLASH??不可取...
是不是哪里有设置对齐的方式的呢??
求好心人帮帮忙,项目急!!!!!
|