打印
[STM32F1]

STM32F103 结构体指针问题

[复制链接]
357|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字节对齐

使用特权

评论回复
5
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];或者以上时,同样会出现地址改变的情况。

使用特权

评论回复
6
juventus9554| | 2021-3-3 21:57 | 只看该作者
编译器的问题

使用特权

评论回复
7
pengf| | 2021-3-3 22:01 | 只看该作者
了快速的内存访问, 编译器会增加无效字节使变量内存对齐

使用特权

评论回复
8
liuzaiy| | 2021-3-3 22:02 | 只看该作者
所以数组改为 data_t[30] 会导致插入字节而地址错误

使用特权

评论回复
9
morrisk| | 2021-3-3 22:04 | 只看该作者
__packed 可以避免这个编译器的增加操作, 但是导致的 内存不对齐可能引起运行错误.

使用特权

评论回复
10
yinxiangh|  楼主 | 2021-3-3 22:06 | 只看该作者
那该怎么解决这个问题呢?

使用特权

评论回复
11
heweibig| | 2021-3-3 22:09 | 只看该作者

都正常啊,你好好理解一下0x800043A的指令。

使用特权

评论回复
12
lizye| | 2021-3-3 22:11 | 只看该作者
一起学习下,我也弄不太懂地址对齐的问题

使用特权

评论回复
13
shimx| | 2021-3-3 22:16 | 只看该作者
用对齐的方式定义结构体里的成员。

使用特权

评论回复
14
spark周| | 2021-3-3 22:18 | 只看该作者
不用管它是不是就可以?

使用特权

评论回复
15
yinxiangh|  楼主 | 2021-3-3 22:22 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
16
paotangsan| | 2021-4-2 12:14 | 只看该作者
字节对齐问题

使用特权

评论回复
17
renzheshengui| | 2021-4-2 12:14 | 只看该作者
编译器的问题

使用特权

评论回复
18
wakayi| | 2021-4-2 12:15 | 只看该作者
编译器会增加无效字节

使用特权

评论回复
19
wowu| | 2021-4-2 12:16 | 只看该作者
改数组长度出现问题

使用特权

评论回复
20
xiaoqizi| | 2021-4-2 12:17 | 只看该作者
内存对齐不对齐的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝