一、理解
关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解:
以江科大自动协教学视频按键输入实验为例:
(1)按键KEY0<——>PE4 按键另一端接GND
(2)按键KEY1<——>PE3 按键另一端接GND
(3)按键WK_UP<——>PA0 按键另一端接VCC
二、再来看一下上拉下拉的图解
A.上拉输入
上拉输入模式下, I/O端口的电平信号经过上拉电阻进入到输入数据寄存器。
二、上拉下拉的选择:
IO内部接上拉电阻,此时如果IO口外部没有信号输入或者引脚悬空,IO口默认为高电平 如果I/O口输入低电平,那么引脚就为低电平,MCU读取到的就是低电平
STM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。
B.下拉输入
下拉输入模式下, I/O端口的电平信号经过下拉电阻进入到输入数据寄存器。
IO内部接下拉电阻,此时如果IO口外部没有信号输入或者引脚悬空,IO口默认为低电平 如果I/O口输入高电平,那么引脚就为高电平,MCU读取到的就是高电平。
三、个人理解--什么时候选择上拉,什么时候选择下拉
如果按键按下是高电平有效的话,我们就下拉,让该IO口在默认状态下处于低电平(即没有按键按下时IO口检测到的总是低电平,只有按键按下的时候IO口才会检测到高电平);
如果按键按下是低电平有效的话,我们就上拉,让该IO口在默认状态下处于高电平(即没有按键按下时IO口检测到的总是高电平,只有按键按下的时候IO口才会检测到低电平)。
简单点来说:
上拉输入就是指在IO口上(芯片内部)串一个电阻到vcc,正常情况IO监测到的是高电平,适用于外部接GND的按键输入;
下拉输入是指在IO口上(芯片内部)串一个电阻到GND,正常情况IO监测到的是低电平,适用于外部接VCC的按键输入。(实在还不理解,记住会用也行)