找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4424|回复: 8
收起左侧

关于C语言Struct结构体和指针的问题

[复制链接]
ID:406128 发表于 2018-11-21 10:22 | 显示全部楼层 |阅读模式
20黑币
请帮我一下划线的那句话解释或者找类似划线这句话的详细解释

屏幕截图(74).png
屏幕截图(73)_LI.jpg

点亮LED.zip

50.6 KB, 下载次数: 5

回复

使用道具 举报

ID:406128 发表于 2018-11-21 11:07 | 显示全部楼层

一个GPIO模块中有很多寄存器,用C语言的Struct来定义它。 每个寄存器都是32位的,...

本帖最后由 来生只想做头猪 于 2018-11-21 11:10 编辑

一个GPIO模块中有很多寄存器,用C语言的Struct来定义它。
每个寄存器都是32位的,而且顺序刚好分别对应,结构体是会分配内存的,这样
这些c语言中的struct结构体中定义的成员会对应映射到对应的寄存器上,那么
   我们[img][/img]就可以通过操作程序中的该结构体的成员,就相当于操作对应寄存器。
屏幕截图(75).png
回复

使用道具 举报

ID:429003 发表于 2018-11-22 13:18 | 显示全部楼层
将一个地址强制转换为一个结构体的指针。
回复

使用道具 举报

ID:431146 发表于 2018-11-22 14:25 | 显示全部楼层
强制类型转换用的,不用的话编译器报错。
回复

使用道具 举报

ID:250696 发表于 2018-11-22 14:52 | 显示全部楼层
GPIO_TypeDef这个结构体表示它是一个拥有7个u32类型的数据结构,GPIOD_BASE是一个u32的数字。
(GPIO_TypeDef*)GPIOD_BASE表示把GPIOD_BASE强制转换成GPIO_TypeDef类型的指针,指针指向的是以GPIOD_BASE为基地址,加上7个u32类型。
回复

使用道具 举报

ID:429716 发表于 2018-11-22 17:05 | 显示全部楼层
通过宏定义将端口GPIOD定义为指向端口D的基地址指针,该指针指向的是GPIO_TypeDef结构体的指针,该结构体里面是所有与IO控制有关的寄存器
回复

使用道具 举报

ID:268015 发表于 2018-11-22 18:42 | 显示全部楼层
定义GPIOD的基地址。对于单片机或者是一些模块,都是先找它的地址,然后给出相应的设置
回复

使用道具 举报

ID:153505 发表于 2018-11-22 18:47 | 显示全部楼层
神州四号寄存器工程    这个工程好高大上啊
回复

使用道具 举报

ID:431641 发表于 2018-11-23 10:25 | 显示全部楼层
定义GPIOD在寄存器的基址。
define GPIOx ((GPIO_TypeDef *) GPIOx_BASE)就是GPIOx 在CRL、CRH、IDR、ODR、BSRR、BRR寄存器的基址
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表