基于STM32L073的工程,申请了一个结构体:typedef struct { uint16_t TUV_P_Threshold; // 0x2000095C uint16_t TUV_P_Delay; uint16_t TUV_PR_Threshold; uint16_t TUV_PR_Delay; uint16_t DUV_P_Threshold; // 0x20000964 uint16_t DUV_P_Delay; uint16_t DUV_PR_Threshold; uint16_t DUV_PR_Delay; // 0x2000096A int32_t DOC_P1_Threshold; // 0x2000096C uint16_t DOC_P1_Delay; // 0x20000970 int32_t DOC_P2_Threshold; // 0x20000972 uint16_t DOC_P2_Delay; // 0x20000978 int32_t DOC_APR_Threshold; // 0x2000097A uint16_t DOC_APR_Delay; // 0x20000980 } 从实际内存分配上看int32_t DOC_P1_Threshold和int32_t DOC_P2_Threshold、DOC_APR_Threshold所占byte不一样,理论上int32_t 应该占4byte,但 DOC_P1_Threshold占了2byte,而DOC_P2_Threshold和DOC_APR_Threshold却占了6byte,如下图: |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L072RB写Bank2 EEPROM不响应中断
STM32L031无法进入boot
定义时,同类型的放到一起,或者仍掉一部分。或者自己想办法凑一下,让以32位对齐。
评分
查看全部评分
u8 a
u8 b
u32 c
这样组成的结构体,你觉得占多少ram?在4字节(大部分都是这个对齐,也有其他的)对齐的情况下是8个byte...因为a、b占用了两个byte后,剩下的2byte无法被c使用,只能从头开始。。。我这里呢只是列举了个大概,还有其他各种考虑,百度上面有具体解释的!!!
评分
查看全部评分
评分
查看全部评分
明白了,多谢
字节对齐问题,明白了,多谢