目录
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为1,BR0为0时。数据输出寄存器就输出低电平
BS与BR配套使用,当BS0为0,BR0为1时。数据输出寄存器就输出高电平
BS与BR配套使用,当BS0为1,BR0为1时。数据输出寄存器就输出高电平,因为高电平有优先级
配置锁定寄存器
防止人为干涉配置,导致配置出错。
使用的时候必须首先开启总开关,然后才能控制相应IO口的开关。