对应b站江科大课程 “按键控制LED” 一节
实现现象:
当按键被按下时,引脚处于低电平状态,LED灯亮。--> 给低电平(0),灯亮
当按键松开时,默认处于高电平状态,LED灯灭; --> 给高电平(1),灯灭
在配置GPIO工作模式的时候,应该配置成哪种工作模式?
k1按键的两个引脚,其中一个引脚接PA0,另一个引脚接GND。
由于K1按键接到了GND,当按键被按下时,PA0是低电平状态;当按键松开时(默认状态),引脚悬空,电平无法确定,要想默认情况下引脚处于高电平(为什么得高电平?因为引脚电平只有高电平和低电平,按键被按下是低电平,那反之默认状态就得配置高电平,要配置高电平就得配置上拉输入模式。),就得使用上拉输入模式,所以GPIO的工作模式设置成上拉输入模式,即PA0配置上拉输入模式。
外部接了上拉电阻(这种情况引脚不会处于悬空状态),
当按键松手时,引脚由于上拉电阻的上拉作用,自然保持为高电平;
当按键按下时,引脚直接接到GND,一股无穷大的力把这个引脚往下拉,引脚变成低电平。
总结:引脚接GND,且外部接了上拉电阻(引脚不会处于悬空状态),则GPIO工作模式可以配置为上拉输入或浮空输入。
PA0通过按键接到3.3V,也就是引脚接VCC,所以GPIO工作模式配置为下拉输入模式,即PA0设置下拉输入模式。
为什么设置下拉输入模式?
因为引脚悬空时无法确定引脚是高电平还是低电平,所以配置下拉模式。
因此,当按键松开时默认为低电平,按键被按下时为高电平。
引脚接VCC,且有外接下拉电阻,所以GPIO工作模式可以配置为下拉模式或浮空输入模式。
总结
个人理解:
引脚的电平只有两种,高电平和低电平。
如果没有外接上拉电阻或下拉电阻,就看引脚是接GND还是VCC;
如果接GND,则配置成上拉输入模式,如果接VCC,则配置成下拉输入模式。
如果有外接上拉电阻或下拉电阻,也可以配置成浮空输入模式。