OpenEdv-开源电子网

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

STM32F0 Packed字节对齐存储错误,急!

[复制链接]

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
发表于 2015-1-15 19:33:30 | 显示全部楼层 |阅读模式
5金钱
今天发了第二个帖子了,碰到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??不可取...
是不是哪里有设置对齐的方式的呢??
求好心人帮帮忙,项目急!!!!!

创新超越梦想,拼搏创造奇迹....
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2015-1-15 21:46:22 | 显示全部楼层
难道是因为u16*地址没有双字节对齐?cm3应该可以开启非字节对齐数据的访问吧?或者你可以在UserCfgSaveTypeDef UserCfgSaveStruct前放个volatile u8的自动变量占位,看看可以不。
业余程序玩家。
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2015-1-15 21:50:28 | 显示全部楼层
其实楼主这个情况对UpdateCfgTypeDef声明为packed就行了。其它两个结构体不用。
业余程序玩家。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-15 22:41:08 | 显示全部楼层
估计是字节对齐的问题,楼主加字节对齐试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-1-16 09:08:14 | 显示全部楼层
回复【3楼】ofourme:
---------------------------------
我试过,出现这样的错误,必须要三个都用PACKED这样定义
Application\MsgDistributeOSTask.h(140): error:  #1032: Definition of nested anonymous struct in packed "struct <unnamed>" must be __packed
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-1-16 09:09:41 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
用ALIGAN__这个吗??
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-1-16 09:10:25 | 显示全部楼层
回复【2楼】ofourme:
---------------------------------
你确定语法没有错误? 我试过了  语法错误呢
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-1-16 09:36:28 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子兄,刚看了一个F4的FLASH模拟EEPROM,发现你用的是4字节来存数据,为什么不能用两个字节呢?我发现官方也是用的4字节,是不是F0和F4一样只能用四字节呢??
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2015-1-16 10:00:20 | 显示全部楼层
地址截图看看。这有啥好急躁的。
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-1-16 13:35:19 | 显示全部楼层
回复【9楼】styleno1:
---------------------------------
啥地址???
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2015-1-16 15:25:08 | 显示全部楼层
看数据结构的地址,你怀疑它,那么分析它
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-16 22:46:46 | 显示全部楼层
回复【6楼】废墟崛起之厦:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 00:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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