很多小伙伴会对上拉电阻和下拉电阻的配置有疑惑,下面我们通过一个小实验来给大家得出正确答案
本次实验用的是正点原子stm32f103RBT6NANo版,软件:stn32CubeMX
我将用到LED0、LED1、LED2、LED3、LED4、KEY0、KEY1、KEY2、WK_UP
LED0----------------------PC0
LED1----------------------PC1
LED2----------------------PC2
LED3----------------------PC3
LED4----------------------PC4
WK_UP --------------PA0
KEY0 ----------------PC8
KEY1-----------------PC9
KEY2------------------PD2
按键控制灯
KEY0-------------LED0
KEY1-------------LED1
KEY2-------------LED2
从原理图可以看出WK_UP、KEY0、KEY1、KEY2没有按下时处于一种悬浮的状态,就是这时候检测该电平可能是高电平或者低电平,所以我们需要确保电平的唯一性,我们就需要引用上拉电阻还是下拉电阻。
上拉电阻是一个电阻连接到VCC
下拉电阻是一个电阻连接到GND
上拉电阻接了个高电平,下拉电阻接了个低电平
现在做个实验,看一下上拉电阻和下拉电阻对按键实验的影响:
KEY0,KEY1,KEY2的原理图是一样的,Cube配置KEY的GPIO mode全部设置为Input mode(悬浮输入),然后我们只改变GPIO Pull-up/GPIO Pull-down。led的配置就不讲了,看我前一篇的博客:https://blog.csdn.net/xiaobai_nixi/article/details/113330135
实验代码:
实验结果:KEY1按键正常控制LED1,LED0会受KEY1按键的影响时亮时灭。轻轻触摸一下KEY0,LED0会亮灭。KEY2不可以控制LED2,程序下进去LED2就会亮。
总结:
根据下面的图配置按键,确保按键没按下时电平的唯一性