结构体如下:
__packed struct AD9362_TypeDef //
{
uint8_t id_no;
//uint8_t id_no1;
uint32_t data_t[8];
bool bbdc_track_en; ////
bool quad_track_en; /////
uint32_t bist_tone_level_dB;
uint32_t bist_tone_mask;
} ;
单字节对齐,当结构体中间数组是data_t[7]; 时运行正常,如下图:
当结构体中间数组是data_t[8]; 时运行不正常,函数形参结构体指针自动改变,如下图:
网上查说字节对齐问题,我改为4字节对齐
__align(4) struct AD9362_TypeDef //
{
uint8_t id_no;
//uint8_t id_no1;
uint32_t data_t[30];
bool bbdc_track_en; ////
bool quad_track_en; /////
uint32_t bist_tone_level_dB;
uint32_t bist_tone_mask;
} ;
中间数组为 data_t[8];时确实没问题,但是数组改为 data_t[30];或者以上时,同样会出现地址改变的情况。
哪位大神遇到过,求解决办法
|