GPIO1_BASE 转换为指向 GPIO_Type 结构体的指针类型后的疑问

GPIO1_BASE 转换为指向 GPIO_Type 结构体的指针类型后的疑问

https://img1.sycdn.imooc.com/climg/6644dfb709f8f36314480566.jpg
https://img1.sycdn.imooc.com/climg/6644dfc7096a256d11040549.jpg


1、这里:GPIO1->GDIR 解析后相当于是  ((GPIO_Type *)GPIO1_BASE)->GDIR


 GPIO1_BASE 转换为指向 GPIO_Type 结构体的指针类型后再指向 GDIR 的作用是什么呢? 

    此时如果打印 GPIO1->GDIR 的结果是什么?


GDIR不是咱们自己定义的属性吗?为啥 写的 GDIR 注释 是 /**< GPIO direction register, offset: 0x4 */ 偏移四个呢?

 



2、__IO 的作用是什么?

恳请老师是以回答问题1和问题2的形式回答我的疑问,而不是只回答1个万分感谢。
为了这个问题我已经又重新回到c基础把 结构体看了一遍也没有看明白请老师讲一下过程谢谢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
中年猿叔 2024-05-16 18:42:41
结构体的偏移量是根据结构体成员的类型来决定的,这里每个成员都是int类型,所以是4哦!
这里的设计是为了访问不同的寄存器,指定了一组寄存器的首地址,后面通过结构体成员的方法偏移到不同的寄存器地址,这样不同的结构体成员就表示不同的寄存器了哦!
_IO是一个空的宏没有什么实际意义,就是为了增加代码的可读性,显示说明这些寄存器是控制GPIO的呢!
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师