STM32F103系列芯片的地址映射和寄存器映射原理

一、STM32F103系列芯片的地址映射和寄存器映射原理

1、什么是寄存器

寄存器(Register)是 CPU 中用于存储数据的单元。在运算器、控制器中,都需要有记忆功能的单元来保存从存储器中读取的数据,以及保存运算器生成的数据,这样的单元就是寄存器。简单来说,寄存器就是存放东西的一个空间器物。寄存器可能存放的是指令、数据或地址。

2、寄存器映射

给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。
比方说我们找到某个单元地址,那么可以通过查阅相关资料了解到此单元具有的功能。因此为了更好区分此单元的功能和方便后续的程序开发,可以给这个单元取一个别名G,那么这个G 就是寄存器,并且这个寄存器地址就是该单元的地址。这个过程就是寄存器映射。

二、GPIO端口的初始化

1、找到时钟是能寄存器映射基地址

比如我们要配置时钟,首先要访问其寄存器,找到其地址。时钟控制的名字是RCC,属于ABH总线,如下图:
在这里插入图片描述
有数据手册可以知道复位和时钟控制RCC的地址范围是:0x4002 1000 - 0x400213FF

2、找到端口偏移地址和对应端口所在的位置

还是查看数据手册:手册RCC_APB2ENR,位3是IOPB,名字是IO端口B时钟使能,就是我们想要的。把RCC_APB2ENR的位3赋值为1,就是开启GPIOB时钟。
在这里插入图片描述

3、使能对应端口时钟

`这里解释以下使能,也就是赋予能量,相当于端口时钟是关闭的,使能对应的时钟就打开了端口时钟,提供能量

4、输出端口寄存器配置

(1)、找到GPIO的地址
在这里插入图片描述

(2)端口输入寄存器的地址偏移
还是查看数据手册
在这里插入图片描述

在这里插入图片描述

这里需要注意使用的寄存器是端口配置低寄存器还是端口配置高寄存器,两者的偏移地址是不相同的

#define GPIOB_CRH (*(unsigned int )0x40010C04)
#define GPIOC_CRH (
(unsigned int )0x40011004)
#define GPIOA_CRL (
(unsigned int *)0x40010800)

GPIOB_CRH&= 0xffffff0f;
GPIOB_CRH|=0x00000020;

GPIOC_CRH &= 0x0fffffff; 
GPIOC_CRH|=0x30000000;

GPIOA_CRL &= 0xfff0ffff; 
GPIOA_CRL|=0x00010000;

(3) 、输入输出设置以及输出速率的设置
根据我们不同的需要选择输出模式和输出的速率

三、stm32和51单片机的对比

所有寄存器都需要时钟才能配置,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。

任何MCU的任何外设都需要有时钟,STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。

51单片机不用配置IO时钟,只是因为默认使用同一个时钟,这样是方便,但是这样的话功耗就降低不了。

例如,某个功能不需要,但是它还是一直运行。
stm32需要配置时钟,就可以把不需要那些功能的功耗去掉。

当你想关闭某个IO的时候,关闭它相对应的时钟使能即可,不过在51里面,在使用IO的时候是没有设置IO的时钟的,在STM32中,有外部和内部时钟之分。

ARM的芯片都是这样,外设通常都是给了时钟后,才能设置它的寄存器(即才能使用这个外设)。STM32、LPC1XXX等等都是这样。
这么做的目的是为了省电,使用了所谓时钟门控的技术。
这也属于电路里同步电路的范畴:同步电路总是需要1个时钟。
比如51单片机想要点亮LED灯,只需要给对应的引脚置低电平就可以了,而stm32却需要使能GPIOx口的时钟,指明GPIOx口的哪一位,这一位的速度大小以及模式
,调用GPIOx初始化函数进行初始化,调用GPIO-SetBits函数,进行相应位的置位。
链接: link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值