STM32按键实验中连接按键的GPIO管脚是上拉输入还是下拉输入

一、理解

关于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的按键输入。(实在还不理解,记住会用也行)

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32,将引设置为上输入模式的方法如下: 1. 配置GPIO的模式为输入模式,可以使用`GPIO_Init()`函数进行配置,例如: ```c GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // 配置PA6引 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 输入浮空模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA ``` 2. 将GPIO输入模式设置为上输入模式,可以使用`GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;`语句进行配置,例如: ```c GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // 配置PA6引 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上输入模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA ``` 在上输入模式下,当没有外部设备连接到引时,引输入电平为高电平。当有外部设备连接到引低引时,引输入电平为低电平。你可以使用`GPIO_ReadInputDataBit()`函数读取引的状态,例如: ```c if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6) == Bit_RESET) { // 引低 } else { // 引为高电平 } ``` 需要注意的是,上输入模式和下输入模式的区别在于输入电平的默认状态,上输入模式为高电平,下输入模式为低电平。在使用IIC总线时,一般使用上输入模式,这样可以避免IIC总线上的设备输出低电平,导致总线冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值