探索STM32地址与偏移

疑问:一直对STM32地址存储有点疑问,比如STM32是一个32位的MCU,那是不是表示一个地址可以存储32位,这样理解看起来好像是没有问题,但是实际你查看手册,你会发现按着这个理解方式,似乎有点不对。

这里我们以stm32F103x系列为例,首先我们来看手册。

通过GPIO端的地址,我们可以发现相邻两个寄存器之间偏移0x04,而且一个寄存器存储32位,如果真是一个地址存储32位话,那偏移应该是0x01,所以我们得出结论在计算机中一个地址,代表一个字节(1Byte),32位刚好表示4个字节,刚好偏移0x04

我们再来看看源码是怎么定义的。

通过查看手册我们发现GPIO口都是挂在APB2总线上。

可以看到把GPIOA_BASE地址定义成一个结构体指针,我们再看看GPIO_TypeDef结构体。

这样我们就很好理解了,源码把GPIO端的基地址定义成结构体指针,并把各寄存器定义成变量,变量的地址就按着结构体首地址自动偏移。我们操作结构体中的变量,相当于直接操作对应地址的寄存器。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值