佚名通过本文主要向大家介绍了stm32结构体,stm32结构体指针,stm32结构体定义,stm32中的结构体,stm32串口发送结构体等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 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函数赋值的
解决方案1:正解,楼主应该看看结构体大小,编译器补了一个字节。 解决方案2:
描述:
本帖最后由 wangjianqun 于 2016-05-19 18:34:06 编辑
我用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函数赋值的
解决方案1:正解,楼主应该看看结构体大小,编译器补了一个字节。 解决方案2:
你改成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;