STM32参考手册中地址偏移如何使用

一、 

        STM32中,32位作为一个内存单元,每个寄存器相邻32位。

        4位二进制数可以表示一个十六进制数,如1111代表F,8位二进制数为一个字节,即1个字节由8位二进制数组成。因此每个寄存器相邻4个字节,8个十六进制数,32位二进制数。

        可以从数据手册中看出,每个寄存器的地址范围都是用8个十六进制数表示。

 

二、

         那么我们如何使用地址去控制每一个寄存器呢?

        这就需要用到地址偏移,因为每个寄存器相邻4个字节,我们可以从参考手册中看出,两个相邻寄存器的地址偏移相差0x04(0Ch=0x0C),这里的地址偏移数中,每一位代表一个字节

 

 

 三、

        为什么说每一位代表一个字节?

        首先,以GPIO中的寄存器为例,每个端口都有很多个寄存器

        从下图参考手册中存储器映射表中可以看出,端口B的地址是0X4001 0C00-0X4001 0FFF,比如我要操控上图的GPIOx_ODR寄存器,那么我就需要操控地址0X4001 0C0C,其中0C是地址偏移

        在端口B的地区范围中,每个寄存器相邻四个字节,而地址偏移也相差4,所以说每一位代表一个字节,每偏移4字节,就到了下一个寄存器

 

 四、

        如何使用地址映射

        以上面所属的控制GPIOx_ODR寄存器为例,首先在地址映射表中查看到所需要控制的端口地址,比如我要控制端口B,那么先写下0X4001 0C,后面两位再去查看具体的寄存器地址偏移,将后两位补上,如上图所示的GPIOx_ODR的地址偏移为0C,因次端口B的GPIOx_ODR寄存器的地址为0X4001 0C0C,

        让其全部输出1,则为 *(unsigned int *)0X4001 0C0C = 0XFFFF

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值