STM32地址映射和寄存器映射

本文详细介绍了STM32的寄存器及寄存器映射概念,通过查找地址的三个步骤展示了如何定位GPIO寄存器,并提供了让GPIOB全输出高电平、点亮LED及流水灯的示例,加深了对寄存器操作的理解。

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

目录

一、什么是寄存器以及什么是寄存器映射

二、查找地址

第一步 找到GPIOB的基地址

第二步 找到端口输入寄存器的地址偏移

第三步 找到具体端口号 

示例一  让 GPIOB 的 16 个 IO 都输出高电平

示例二  点亮led灯

示例三 流水灯

总结


一、什么是寄存器以及什么是寄存器映射

在存储器 Block2 这块区域,设计的是片上外设,它们以四个字节为一个单元,共 32bit, 每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可以找到 每个单元的起始地址,然后通过 C 语言指针的操作方式来访问这些单元,如果每次都是通 过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的 不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个 给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射

二、查找地址

如果我们需要找到某个寄存器的地址,那应该如何查找呢?我们在初学者时,通常采用查阅《STM32F10xxx参考手册》的方式。例如我们要查找GPIOA中的P1端口,通常有三步。

第一步 找到GPIOB的基地址

首先我们找到GPIOA所有端口所在的地址范围

我们看到GPIOA相关的寄存器所在的范围为0x4001 0800到 0x4001 0BFF

第二步 找到端口输入寄存器的地址偏移

继续查阅资料发现端口输入寄存器的地址偏移为0x08,也就是0x4001 0800 + 8=0x4001 0808

第三步 找到具体端口号 

继续查表,发现GPIOA的p1口位于从右往左数的第二个

 然后我们就可以直接访问这个地址

 unsigned int *pGPIOA_IDR = (unsigned i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值