[STM32F1] STM32F103 结构体指针问题

[复制链接]
613|19
 楼主| yinxiangh 发表于 2021-3-3 21:47 | 显示全部楼层 |阅读模式
结构体如下:
__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];        时运行正常
 楼主| yinxiangh 发表于 2021-3-3 21:49 | 显示全部楼层
当结构体中间数组是data_t[8];        时运行不正常,函数形参结构体指针自动改变
午夜粪车 发表于 2021-3-3 21:51 | 显示全部楼层
字节对齐问题
zhenykun 发表于 2021-3-3 21:53 | 显示全部楼层
改为4字节对齐
 楼主| yinxiangh 发表于 2021-3-3 21:55 | 显示全部楼层
__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];或者以上时,同样会出现地址改变的情况。
juventus9554 发表于 2021-3-3 21:57 | 显示全部楼层
编译器的问题
pengf 发表于 2021-3-3 22:01 | 显示全部楼层
了快速的内存访问, 编译器会增加无效字节使变量内存对齐
liuzaiy 发表于 2021-3-3 22:02 | 显示全部楼层
所以数组改为 data_t[30] 会导致插入字节而地址错误
morrisk 发表于 2021-3-3 22:04 | 显示全部楼层
__packed 可以避免这个编译器的增加操作, 但是导致的 内存不对齐可能引起运行错误.
 楼主| yinxiangh 发表于 2021-3-3 22:06 | 显示全部楼层
那该怎么解决这个问题呢?
heweibig 发表于 2021-3-3 22:09 | 显示全部楼层

都正常啊,你好好理解一下0x800043A的指令。
lizye 发表于 2021-3-3 22:11 | 显示全部楼层
一起学习下,我也弄不太懂地址对齐的问题
shimx 发表于 2021-3-3 22:16 | 显示全部楼层
用对齐的方式定义结构体里的成员。
spark周 发表于 2021-3-3 22:18 | 显示全部楼层
不用管它是不是就可以?
 楼主| yinxiangh 发表于 2021-3-3 22:22 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
paotangsan 发表于 2021-4-2 12:14 | 显示全部楼层
字节对齐问题
renzheshengui 发表于 2021-4-2 12:14 | 显示全部楼层
编译器的问题
wakayi 发表于 2021-4-2 12:15 | 显示全部楼层
编译器会增加无效字节
wowu 发表于 2021-4-2 12:16 | 显示全部楼层
改数组长度出现问题
xiaoqizi 发表于 2021-4-2 12:17 | 显示全部楼层
内存对齐不对齐的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部