蓝桥杯嵌入式stm32G431——GPIO手册及相关寄存器

发布于:2025-03-15 ⋅ 阅读:(14) ⋅ 点赞:(0)

目录

GPIO介绍

数据手册查找GPIO的功能

数据手册配置GPIO的功能

微控制器参考手册指定IO口功能

GPIO内部介绍

先看输出部分

普通IO输出操作:

外设输出操作:

复用功能输出:

 输入部分

了解关于保护二极管这部分

了解关于上拉下拉电阻这

模拟输入输出部分

GPIO相关寄存器

GPIO8种模式的介绍

浮空输入模式

寄存器的配置

上拉输入模式

寄存器配置

下拉输入模式

寄存器配置

模拟输入模式

寄存器配置

开漏输出模式

寄存器配置

输出类型寄存器

输出速度寄存器

推挽输出模式

寄存器配置

复用推挽输出模式

寄存器配置

复用开漏输出模式

寄存器配置

寄存器的讲解

模式选择寄存器

输出类型寄存器

输出速率寄存器

上下拉电阻寄存器

输入数据寄存器

输出数据寄存器

置位复位寄存器

配置锁定寄存器

复用功能低8位选择寄存器

复用模式高8位选择寄存器

寄存器地址


GPIO介绍

由图可以看出,共有64个引脚,每个引脚不仅仅可以输出1与0(低电平,高电平)。还有其他的功能,比如串口的RTX。那我们如何知道这个引脚的其他功能是什么呢?

这就需要介绍数据手册了(又见面了,数据手册)。

数据手册查找GPIO的功能

位置

其中,只列一小部分,太多了

这个部分手册内容就是在查找引脚复用功能的。

就比如,我们需要配置TIM1定时器1。这就需要查找定时器1在哪个引脚之上。如图所示,就会发现定时器1在PC13上存在。就可找到PC13口来配置。

那我们现在又遇到了个问题,就是如何配置才能让PC13IO口成为我们要的功能呢?

这就又需要查找数据手册

数据手册配置GPIO的功能

位置

部分内容

这张图就可以看到每个IO口相对应的复用功能。

打个比方,如果我们需要用到(PB10,AF7)的串口3发送功能。我们就需要将PB10指定为复用功能AF7。

那么如何将PB10指定为AF7呢?只用PB10=AF7??

微控制器参考手册指定IO口功能

此刻为调用寄存器,所以查找微控制器参考手册。

位置

内容

复用功能低位配置就是配置0~7这些IO口,而8~15这些IO口为复用功能高位配置。

如果此时GPIOx_AFRL中x=A,拿第一张图的AFSEL0[3:0]就是代表PA0口。

而如果我们需要将PA0口设置位复用功能1,我们就只需将AFSEL0中的四位配置为 0001 这就对应AF1。

GPIO内部介绍

先看输出部分

普通IO输出操作

当写操作发送一个1时,他会通过输出数据寄存器到选择器,选择器选择输出写操作数据后,发送数据给输出控制,比如发送1。取反后变为0,发送给P Mos与N Mos(两者都会发送),但P Mos存在一个取反操作。使得P Mos为1,N Mos为0。当P Mos为一后,输出电路就会接上VDD,发送高电平。

相反,如果输出数据寄存器发送为0,那么P Mos为0,N Mos为1。输出电路就会接上VSS,发送低电平。

外设输出操作:

外设(比如红外传感,超声波测距仪等),它们可以直接发送1或0信号。

复用功能输出:

这就需要将选择器选择复用功能输出,这个部分可以模仿串口的TDX(发送数据),就是短时间内发送大量的1或0信号。

 输入部分

主要看这个部分

了解关于保护二极管这部分

如图所示,保护二极管的方向为自下往上,其中VDD_FT为3.3伏,VSS为0伏

作用:保护电路,如果此时有一段5V电流从IO口流入,但电路的可承受最大电压为3.3V。这就需要VDD_FT去分流部分电流,使得5V电流分流后为3.3V电流。

同理,如果此时有一段-5V电流从IO口流入,但电路的可承受最低电压为0V。这就需要VSS去分流部分电流,使得-5V电流分流后为0V电流。

了解关于上拉下拉电阻这

我们可以假设,如果此刻在上拉电阻与下拉电阻都不接时,此时输入读进来的电平为多少?

如果此刻的IO什么都不输入,但会有微小电流影响,可能一会为正电压,一会为负电压,这就叫做电平跳变。这个时候就需要接上上下拉电阻。

作用:为防止电平跳变。使得当IO口无输入时电平始终为高电平或低电平。

模拟输入输出部分

直接输入输出,配置就行。

GPIO相关寄存器

位置如上图

进入之后

这个手册只当作字典来供查阅。

配置寄存器后我们可以得到8种模式,以下,一一介绍

GPIO8种模式的介绍

浮空输入模式

标黄部分为使用到的部分

因为为“浮空”,所以没有接上下拉电阻。

使用场景:当IO口外界存在上拉或下拉电阻时,可调为该模式。

寄存器的配置

通过手册查找寄存器

进入模式寄存器

这里如果我们要将GPIOA的Pin0口调用为浮空输入模式,我们就需要将GPIOx中的“x”写为A,而MODE0[1:0]此刻就代表为Pin0口

下面的模式选择,就是我们需要写入MODE0[1:0]中的数据,其中00:输入模式,这样就选择了输入模式,但没有选择上拉还是下拉还是浮空。

此刻,我们就需要查看上下拉寄存器

这里,我们在上面已经将Pin0选择输入模式,现在我们还需要将Pin0口选择为浮空。看下图,其中00:为浮空。因此,这里的PUPD0[1:0]选择00

总的来说:模式寄存器就是选择时输入还是输出,而上下拉寄存器就是选择是否需要接上下拉电阻

上拉输入模式

寄存器配置

同理同理看浮空输入

00:代表选择输入模式

01:代表选择上拉电阻

下拉输入模式

寄存器配置

同理看浮空输入

00:代表选择输入模式

10:代表选择下拉电阻

模拟输入模式

寄存器配置

同理看浮空输入

11:模拟输入模式

00:不接电阻

开漏输出模式

寄存器配置

01:通用输出模式

1:开漏模式

这里多了个输出类型寄存器,可以翻阅手册

输出类型寄存器

如果选择了1,也就是选择开漏。那么输出模式中的P-MOS管就无法工作了。

0:P-MOS管工作,推挽输出

1:P-MOS无法工作,开漏输出

输出速度寄存器

00:低速

01:中速

10:高速

11:超高速

这里的作用就是选择性能。

推挽输出模式

寄存器配置

01:通用输出模式

0:推挽模式

复用推挽输出模式

寄存器配置

10:复用功能·

0:推挽

复用开漏输出模式

寄存器配置

10:复用功能

1:开漏

寄存器的讲解

模式选择寄存器

输出类型寄存器

输出速率寄存器

上下拉电阻寄存器

输入数据寄存器

输出数据寄存器

置位复位寄存器

这个寄存器就是控制输出数据寄存器的

BS与BR配套使用,当BS0为1BR0为0时。数据输出寄存器就输出低电平

BS与BR配套使用,当BS0为0BR0为1时。数据输出寄存器就输出高电平

BS与BR配套使用,当BS0为1BR0为1时。数据输出寄存器就输出高电平,因为高电平有优先级

配置锁定寄存器

防止人为干涉配置,导致配置出错。

使用的时候必须首先开启总开关,然后才能控制相应IO口的开关。

复用功能低8位选择寄存器

复用模式高8位选择寄存器

寄存器地址