stm32 结构体赋值问题

wangjianqun 2016-05-19 06:31:51
我用KEIL做一个STM32的项目,其中建立这样一个结构
typedef struct
{
u8 hour;//u8位无符号字符型
u8 min;
u8 sen;
s16 offset;//short型
u8 op_port;
u8 new_state;
u8 auto_state[8];
}rev_con;
但赋值的时候 offset怎么都不对,规律是 op_port赋值到offset的高8位上了,而setoff高8位不翼而飞。在内存观察口看数据还是对的,但watch口观察变量就是错的,不知道什么原因,哪位大侠帮看看,感激不尽。
另外我是用memcpy函数赋值的
...全文
610 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_35055873 2016-05-19
  • 打赏
  • 举报
回复
引用 1楼dceacho 的回复:
你改成1字节对齐就应该可以了
#pragma pack(1)
typedef struct
 {
 u8 hour;//u8位无符号字符型
 u8 min;
 u8 sen;
 s16 offset;//short型
 u8 op_port;
 u8 new_state;
 u8 auto_state[8];
 }rev_con;
正解,楼主应该看看结构体大小,编译器补了一个字节。
dceacho 2016-05-19
  • 打赏
  • 举报
回复
你改成1字节对齐就应该可以了
#pragma pack(1)
typedef struct
 {
 u8 hour;//u8位无符号字符型
 u8 min;
 u8 sen;
 s16 offset;//short型
 u8 op_port;
 u8 new_state;
 u8 auto_state[8];
 }rev_con;

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧