单片机结构体的内存对齐

单片机:KE02Zxx,基于Cortex-M0,Cortex-M0应为32位。

一个地址对应一个字节。

由IIC主机写入从机地址的数据需要连续传输地址和数据。数据地址和数据地址要求连续。我想用结构封装它们,然后连续发送它们,但是我不想遇到结构的内存对齐问题。如下所示。

具有以下代码:

typedef struct

{

uint 16 address;

uint32 u32data

uint16 sizeOfdata

} u32DATA _ def

u32DATA_def SerialNumber={。地址=0x0000,

.u32data=0x,

。sizeOfdata=4 };

执行后:

其相关地址如下:

serial number . address=0x1ffffc00

serial number . u32 data=0x 1ffffc 04

serial number . address=0x 1ffffc 08

调试工具Memor Y如下查看0x 1ffffc 00,其中的地址为。地址和。u32数据由于地址对齐而被3分开,因此它们是不连续。

依次发送0x0000 (如下图所示)。0x0000

应该被发送,因为结构的地址是对齐的,从而导致地址不连续,任务不能完成。需要一个新想法。

结束。

-