STM32学习二:理解位绑定

本文详细介绍了STM32中的位绑定操作,包括位带区、别名区的概念,以及如何计算位带区目标位映射到别名区的起始地址。通过实例解析GPIO端口的位绑定地址计算,帮助理解对寄存器位的操作,是学习STM32嵌入式开发的重要基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习STM32首先要理解的就是对寄存器的操作了,因为在STM32中对各IO口的操作实际就是对寄存器中各个位的操作。

在看了一个关于寄存器位绑定操作的教学视频后仍然是一头雾水,只能去网上查询各种资料,如比较有用的有《STM32位绑定操作的理解》,加上其他文章,形成了自己对位绑定的理解。

STM32将寄存器映射到了位带区(bit_band region),这样就可以通过统一的线性寻址空间直接操作寄存器了,这个空间就是0x00000000~0xFFFF FFFF共4GB大小,寄存器只是其中一小部分,其他包括程序存储区、数据存储区、输入输出端口等。这样的映射有两段,分别是0x2000 0000~0x200F FFFF(SRAM)及0x4000 0000~0x400F FFFF(片上外设)。经转换可知,这两个地址分别都有1MB(注意是字节)那么大,如果转换成bit的话应该是8Mb。

 可这样操作还是不方便,如果要操作某一位需要进行位运算才行,回来几次挺浪费计算资源的。因为CPU是32位的,最方便快捷的是直接操作一个32位的地址,比如0x4200 ABCD这样,对这个地址赋值是最快捷的操作,只要一条指令。于是STM32又设计出别名区(Alias region)的概念,将一个32位地址空间对应到位带区(bit_band region)中的一个位。32位是STM32 CPU能独立访问的地址空间(称为字,即4个字节),将这个地址空间的起始位(bit0,其他bit1~bit31忽略)内容设为0或1就等于对位带区的相应位进行了操作,也相当于对寄存器进行了操作。

映射关系是:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值