STM32入门系列-位带操作介绍

本文介绍了STM32F1的位带操作,包括外设位带别名区和SRAM位带别名区地址转换的计算方法,并提供了一个宏定义来简化位带地址的计算。位带操作简化了GPIO的输入输出操作,使得代码更简洁易读。
摘要由CSDN通过智能技术生成

向大家介绍 STM32F1 的位带操作,让 STM32 的位操作和 51 单片机的位操作一样简单。

位带操作

在学习 51 单片机的时候就使用过位操作,通过关键字 sbit 对单片机 IO 口进行位定义。但是 STM32 没有这样的关键字,而是通过访问位带别名区来实现。即将每个比特位膨胀成一个 32 位字,当访问这些字的时候就达到了访问比特的目的。比方说 BSRR 寄存器有 32 个位,那么可以映射到 32 个地址上,当我们去访问这 32 个地址就达到访问 32 个比特的目的。
STM32F1 中有两个区域支持位带操作,一个是 SRAM 区的最低 1MB 范围,一个是片内外设区的最低 1MB 范围(APB1、APB2、AHB 外设)。如下图所示:

在这里插入图片描述

从图中可知,SRAM 的最低 1MB 区域,地址范围是 0X2000 0000-0X200FFFFF。片内外设最低 1MB 区域,地址范围是 0X4000 0000-0X400F FFFF,在这个地址范围内包括了 APB1、APB2、AHB 总线上所有的外设寄存器。
在 SRAM 区中还有 32MB 空间,其地址范围是 0X2200 0000-0X23FF FFFF,它是 SRAM 的 1MB 位带区膨胀后的位带别名区,前面已经说过位带操作,要实现位操作即将每一位膨胀成一个 32 位的字,因此 SRAM 的 1MB 位带区就膨胀为 32MB的位带别名区,通过访问位带别名区就可以实现访问位带中每一位的目的。
片内外设区的 32MB 的空间也是一样的原理。 片内外设区的 32MB 地址范围是0X4200 00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值