概述
STM32寄存器原理
文章目录
- STM32寄存器原理
- 一、寄存器是什么?
- 寄存器简介
- 工作原理
- 二、地址映射和寄存器映射的原理
- 地址映射
- 寄存器映射
- 三、GPIO端口的初始化
- 1、时钟设置
- 2、GPIO模式
- 3、输入输出设置
- 4、最大速率设置
- 四、总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、寄存器是什么?
寄存器简介
寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。
工作原理
在计算机及其他计算系统中,寄存器是一种非常重要的、必不可少的数字电路苛件,它通常由触发器(D触发器)组成,主要作用是用来暂时存放数码或指令。一个触发器可以存放一位二进制代码,若要存放N位二进制数码,则需用N个触发器。
寄存器应具有接收数据、存放数据和输出数据的功能,它由触发器和门电路组成。只有得到“存入脉冲”(又称“存入指令”、“写入指令”)时,寄存器才能接收数据;在得到“读出”指令时,寄存器才将数据输出。
寄存器存放数码的方式有并行和串行两种。并行方式是数码从各对应位输入端同时输入到寄存器中;串行方式是数码从一个输入端逐位输入到寄存器中。
寄存器读出数码的方式也有并行和串行两种。在并行方式中,被读出的数码同时出现在各位的输出端上;在串行方式中,被读出的数码在一个输出端逐位出现。
二、地址映射和寄存器映射的原理
地址映射
为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。
寄存器映射
在存储器 Block2 这块区域,设计的是片上外设,它们以四个字节为一个单元,共 32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可以找到每个单元的起始地址,然后通过 C 语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。
下面通过查找GPIOB端口相关寄存器进行举例:
第一步,找到GPIOB的基地址
也就是找到GPIOB的小区。结论是,所有GPIOB相关的寄存器,都住在0x4001 0C00到0x4001 0FFF范围内。
第二步,找到端口输入寄存器的地址偏移
找到存储数据的那个屋子,结论是0x4001 0C00+8 = 0x4001 0C08
第三步,找到数据
PB3的数据位于从右往左数第4个。
而这个寄存器的位数是32位(虽然高16位没有用到),这就是32位的单片机的意思。每个寄存器都占据4字节,32位。而CPU的总线一次可以操作32位,所以比8位单片机厉害一点。
经过这三步查找,我们可以做出以下结论:PB3的输入数据位于0x4001 0C08这个地址上,这个地址上存放数据的右起第4个位就是PB3引脚对应的高低电平。
三、GPIO端口的初始化
1、时钟设置
原因:
为了让用户更好地掌握功耗,设置开关可以让用户更精确地控制,关闭不需要的设备,以达到节省供电的目的。
时钟控制名字叫做RCC,属于AHB总线。GPIOB属于APB2。
2、GPIO模式
GPIO的八种工作方式:四种输入方式,四种输出方式:
四种输入方式:模拟输入、浮空输入、下拉输入、上拉输入
四种输出方式:推挽、开漏、、推挽式复用、开漏复用
3、输入输出设置
输入模式
1、浮空输入模式:浮空输入状态下,IO 的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。可做KEY按键识别。
2、上下拉输入模式:内部设有上拉和下拉电阻,当外部电路为低电平,IO口设为下拉模式,当外部电路为低电平,IO口设为上拉模式。
输出模式
1、推挽输出模式:(不常用)
2、开漏输出模式:(不常用)
3、推挽、开漏复用模式:当GPIO口被用作第二功能时,需要配置,端口重映射AFIO。
4、最大速率设置
设置输出模式为推挽输出,输出速度为2Mhz
GPIOA_CRL&=0xFFF0FFFF; //设置位 清零
GPIOA_CRL|=0x00020000; //PA4推挽输出,把第19、18、17、16位变为0010
GPIOB_CRL&=0xFF0FFFFF; //设置位 清零
GPIOB_CRL|=0x00200000; //PB5推挽输出,把第23、22、21、20变为0010
GPIOC_CRH&=0xFF0FFFFF; //设置位 清零
GPIOC_CRH|=0x00200000; //PC14推挽输出,把第23、22、21、20变为0010
四、总结
通过此次作业,我了解了STM32寄存器的工作原理以及工作前的设置准备。学习并对STM32F103系列芯片的地址映射和寄存器映射原理,了解了GPIO端口的初始化设置三步骤。为后面使用STM32实现简单项目工作打下基础。
最后
以上就是爱笑可乐为你收集整理的STM32寄存器原理STM32寄存器原理一、寄存器是什么?二、地址映射和寄存器映射的原理三、GPIO端口的初始化四、总结的全部内容,希望文章能够帮你解决STM32寄存器原理STM32寄存器原理一、寄存器是什么?二、地址映射和寄存器映射的原理三、GPIO端口的初始化四、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复