找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3363|回复: 8
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
20黑币
请帮我一下划线的那句话解释或者找类似划线这句话的详细解释

屏幕截图(74).png (435.81 KB, 下载次数: 34)

屏幕截图(74).png

屏幕截图(73)_LI.jpg (1.23 MB, 下载次数: 47)

屏幕截图(73)_LI.jpg

点亮LED.zip

50.6 KB, 下载次数: 5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 (111.39 KB, 下载次数: 48)

屏幕截图(75).png
回复

使用道具 举报

板凳
ID:429003 发表于 2018-11-22 13:18 | 只看该作者
将一个地址强制转换为一个结构体的指针。
回复

使用道具 举报

地板
ID:431146 发表于 2018-11-22 14:25 | 只看该作者
强制类型转换用的,不用的话编译器报错。
回复

使用道具 举报

5#
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类型。
回复

使用道具 举报

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

使用道具 举报

7#
ID:268015 发表于 2018-11-22 18:42 | 只看该作者
定义GPIOD的基地址。对于单片机或者是一些模块,都是先找它的地址,然后给出相应的设置
回复

使用道具 举报

8#
ID:153505 发表于 2018-11-22 18:47 | 只看该作者
神州四号寄存器工程    这个工程好高大上啊
回复

使用道具 举报

9#
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 单片机教程网

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