STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置

目录

  • 一、STM32F103系列芯片的地址映射和寄存器映射原理
    • 什么是寄存器
    • 地址映射和寄存器映射原理
  • 二、GPIO端口的初始化设置步骤
    • GPIO简介
    • 第一步时钟配置
    • 时钟的作用
    • stm32时钟的配置
    • 第二步输入输出模式设置
      • 工作模式
      • GPIO8种工作模式
      • 输入和输出
      • 输入模式
      • 输出模式
    • GPIO初始化步骤
      • 实例
  • 三小结
  • 四参考

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

什么是寄存器

  • 基本含义:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。
    通俗的讲:寄存器就是存放东西的东西。从名字来看,跟火车站寄存行李的地方好像是有关系的。只不过火车站行李寄存处,存放的行李;寄存器可能存放的是指令、数据或地址。
  • 存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来问问他,数据是多少就行了。问寄存器这个动作,叫做访问寄存器。不同的数据会存放在不同的寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢过地址,不同的寄存器有不同的地址,就像老张行李寄存处在101号店铺,老王行李寄存处在258号店铺。
  • 指令、地址寄存器与数据寄存器类似,里边存放的都是0和1,毕竟单片机也只认识机器码,机器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。

地址映射和寄存器映射原理

  • 以STM32为例,操作硬件本质上就是操作寄存器。在存储器片上外设区域,四字节为一个单元,每个单元对应不同的功能。当我们控制这些单元时就可以驱动外设工作,我们可以找到每个单元的起始地址,然后通过C 语言指针的操作方式来访问这些单元。但若每次都是通过这种方式访问地址,不好记忆且易出错。这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名实质上就是寄存器名字。给已分配好地址(通过存储器映射实现)的有特定功能的内存单元取别名的过程就叫寄存器映射。

二、GPIO端口的初始化设置步骤

GPIO简介

GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32芯片的GPIO被分成很多组,每组有16个引脚,如型号为STM32F4IGT6型号的芯片有GPIOA、GPIOB、GPIOC至GPIOI共9组GPIO,芯片一共176个引脚,其中GPIO就占了一大部分,所有的GPIO引脚都有基本的输入输出功能。

最基本的输出功能是由STM32控制引脚输出高、低电平,实现开关控制,如把GPIO引脚接入到LED灯,那就可以控制LED灯的亮灭,引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。

最基本的输入功能是检测外部输入电平,如把GPIO引脚连接到按键,通过电平高低区分按键是否被按下。

第一步时钟配置

时钟的作用

  • 决定了程序执行的速度,给芯片提供一个稳定的执行频率
  • 为了省电,默认的时钟都是关闭的。配置STM32的任何资源前,都必须首先使能时钟。

stm32时钟的配置

时钟控制名字叫做RCC,属于AHB总线。GPIOB属于APB2

STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置
GPIO的八种工作模式:输入输出是相对于CPU,四种输入、四种输出模式及四种输出最大速度

(1)GPIO_Mode_AIN 模拟输入

将IO口作为模拟输入接口,输入的可能是变化的值,接收外部的模拟信号输入

(2)GPIO_Mode_IN_FLOATING 浮空输入

复位上电的时候,引脚不确定电平的高低

(3) GPIO_Mode_IPD 下拉输入

将IO口作为通用输入接口,只能输入0或者1,强制下拉,一般是为了输入强低电平

(4) GPIO_Mode_IPU 上拉输入

将IO口作为通用输入接口,只能输入0或者1,强制下拉,一般是为了输入强高电平

(5) GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)

要得到高电平状态需要上拉电阻才行,可以作为电流型驱动

(6) GPIO_Mode_AF_OD 开漏复用输出(带上拉或者下拉)

复用功能,不只是单纯的作为输入输出,可以作为其他功能的引脚:串口、I2C、SPI,要得到高电平状态需要上拉电阻才行

(7) GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)

——IO 输出 0-接 GND, IO 输出 1 -接 VCC,读输入值是未知的,输出0,就一定是0,输出1就一定是1

(8) GPIO_Mode_AF_PP 推挽复用输出(带上拉或者下拉)

复用功能,不只是单纯的作为输入输出,可以作为其他功能的引脚:串口、I2C、SPI,输出0,就一定是0,输出1就一定是1

(9)GPIO四种最大输出速度:2MHZ、25MHZ、50MHZ、100MHZ

GPIO8种工作模式

输入和输出

输入 进行数据的采集,外部电路通过IO口输入模拟量,然后通过“TTL肖特基触发器”(肖特基触发器是将相对缓慢变化的模拟信号变成矩形信号,便于后面读取),进入输入数据寄存器,最后就能给CPU读取数据。

输出 GPIO的输出与51的 IO口是差不多的概念,都是输出高、低电平来控制外部电路:

处理过程:CPU下达输出高或低电平指令,指令配置“位设置/清除寄存器(GPIOx_BSRR)”(设置就是“1”高电平,清除就是“0”低电平),再由位寄存器配置输出数据寄存器(GPIOx_ODR),经过一个选择器(选择是一般输出还是复用功能输出),然后进行输出控制,控制是什么模式:推挽、开漏或者关闭,然后输出高或低电平到IO口。

输入模式

输入浮空:浮空就是逻辑器件与引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,

相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。通俗讲就是浮空就是浮在空中,就相当于此端口在默认情况下什么都不接,呈高阻态,这种设置在数据传输时用的比较多。浮空最大的特点就是电压的不确定性,它可能是0V,页可能是VCC,还可能是介于两者之间的某个值(最有可能) 浮空一般用来做ADC输入用,这样可以减少上下拉电阻对结果的影响

输入上拉模式:上拉就是把点位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平。电阻同时起到限流的作用。弱强只是上拉电阻的阻值不同,没有什么严格区分

输入下拉:就是把电压拉低,拉到GND。与上拉原理相似

模拟输入:模拟输入是指传统方式的输入,数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,

转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。

输入浮空(GPIO_Mode_IN_FLOATING)
输入上拉(GPIO_Mode_IPU)
输入下拉(GPIO_Mode_IPD)
模拟输入(GPIO_Mode_AIN)

输出模式

开漏输出(GPIO_Mode_Out_OD)
开漏复用功能(GPIO_Mode_AF_OD)
推挽式输出(GPIO_Mode_Out_PP)
推挽式复用功能(GPIO_Mode_AF_PP)

输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)

开漏复用功能:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。端口必须配置成复用功能输出模式(推挽或开漏)
推挽式输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三级管分别受到互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形方法任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。输出即可以向负载灌电流。推拉式输出级即提高电路的负载能力,又提高开关速度

推挽式复用功能:可以理解为GPIO口被用作第二功能时的配置情况(并非作为通用IO口使用)

GPIO初始化步骤

第一步:使能GPIOx口的时钟
第二步:指明GPIOx口的哪一位,这一位的速度大小以及模式
第三步:调用GPIOx初始化函数进行初始化
第四步:调用GPIO-SetBits函数,进行相应位的位置

实例

  • 单个GPIO端口
  • 多个GPIO端口

三小结

GPIO初始化需要时钟配置、输入输出模式设置、最大速率设置三个步骤实现。

四参考

https://blog.csdn.net/cleveryoga/article/details/120927837pm=1001.2014.3001.5502
https://blog.csdn.net/qq_45917157/article/details/120855266pm=1001.2014.3001.5502

来源:源的涵涵葛

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月6日
下一篇 2022年9月6日

相关推荐