STM32F103之点亮LED二、结构体封装寄存器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

外设寄存器的地址都是基于外设总线基地址的偏移地址,都在在外设基地址上逐次增加的。每个寄存器占4个字节。首地址已知,其他的相邻的寄存器按照4个字节逐次增加。在C语言中,类似于结构体数据类型,在结构体中首个成员变量代表分配的首地址,其他的成员变量按照定义的数据类型依次增加。但结构体定义的过程中是有空间没有具体分配地址的,只有应用的时候才去分配具体地址。


一、基地址分析

在这里插入图片描述
在这里插入图片描述

二、结构体封装寄存器

在这里插入图片描述
在这里插入图片描述

分析上图的地址偏移量,每个寄存器的空间都是4个字节。GPIOA偏移量为0x00 8000挂在APB2下,基地址0x4000 0000;GPIOA的地址为0x4000 0000 +0x00 8000=0x4000 8000。
依次类推:
在这里插入图片描述

三、引用结构体

我们可以定义一种结构体,结构体的基地址=外设基地址,结构体成员=外设基地址寄存器。成员的排列顺序跟寄存器的顺序一样。这样我们操作寄存器的时候就不用每次都找到绝对地址,只要知道外设的基地址就可以操作外设的全部寄存器,即操作结构体的成员即可。

在这里插入图片描述
在这里插入图片描述


总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值