GPIO_Mode_Out_PP 代表推挽输出模式(Push-Pull Output Mode),这是一种常用的 GPIO 输出模式。在推挽输出模式下,GPIO 引脚可以输出高电平或低电平,能够直接驱动一些外部设备,如 LED 灯、继电器等。
工作原理
当引脚输出高电平时,内部的上拉晶体管导通,下拉晶体管截止,引脚与电源相连,输出高电平信号。
当引脚输出低电平时,内部的下拉晶体管导通,上拉晶体管截止,引脚与地相连,输出低电平信号。
当IN输入低电平时,P-MOS导通,N-MOS截止,此时OUT输出的电压是VDD,高电平;
当IN输入高电平时,N-MOS导通,P-MOS截止,此时OUT输出的电压是VSS,低电平;
GPIO_Mode_IPD 代表下拉输入模式(Input Pull-Down Mode),在这种模式下,GPIO 引脚用于输入信号,并且内部会连接一个下拉电阻,将引脚的默认电平拉低到地电平。
工作原理
当外部没有信号输入时,由于内部下拉电阻的作用,引脚电平为低电平。
当外部有高电平信号输入时,引脚电平会被拉高,此时可以通过读取引脚的电平状态来获取外部信号。
为什么在配置LED的时候是推挽输出?
1.推挽输出模式能够提供较强的驱动能力,既可以输出高电平,也可以输出低电平。当输出高电平时,引脚通过内部的上拉晶体管连接到电源,能够向外部负载(如 LED)提供电流;当输出低电平时,引脚通过内部的下拉晶体管连接到地,能够吸收外部负载的电流。这样可以确保 LED 能够获得足够的电流来正常发光。
2.推挽输出模式可以方便地控制引脚的电平状态。通过调用标准库中的 GPIO_SetBits 和 GPIO_ResetBits 函数,能够轻松地将引脚置为高电平或低电平,从而实现 LED 的点亮和熄灭控制。
为什么配置红外传感器的时候是下拉输入?
1.避免引脚浮空。红外传感器通常输出数字信号(高电平或低电平),用于指示是否检测到物体。在没有外部信号输入时,如果 GPIO 引脚处于浮空状态,引脚电平会受到外界干扰而不稳定,可能会导致误判。下拉输入模式内部连接了一个下拉电阻,将引脚的默认电平拉低到地电平,避免了引脚浮空,使引脚电平更加稳定。
2.准确读取传感器信号。当红外传感器检测到物体时,会输出高电平信号;当未检测到物体时,引脚电平保持为低电平(由于下拉电阻的作用)。通过将 GPIO 引脚配置为下拉输入模式,可以准确地读取红外传感器输出的信号,判断是否检测到物体。
为什么配置按键的时候是上拉输入?
1. 避免引脚浮空
按键在未按下时,其对应的 GPIO 引脚如果处于浮空状态,那么引脚电平会受到外界干扰(如电磁干扰、静电等)而不稳定,可能会出现电平随机跳变的情况,导致单片机误判按键状态。
采用上拉输入模式,内部会连接一个上拉电阻,将引脚的默认电平拉高到电源电平。这样在按键未按下时,引脚电平稳定在高电平;当按键按下时,引脚通过按键连接到地,电平变为低电平。从而有效避免了引脚浮空带来的干扰问题。
2. 确保按键状态的准确读取
未按下状态:在按键未按下时,由于上拉电阻的作用,引脚保持高电平。单片机读取该引脚电平时,能够稳定地检测到高电平信号,从而判断按键处于未按下状态。
按下状态:当按键按下时,按键导通,将引脚电平拉低到地电平。单片机读取到低电平信号,即可判断按键被按下。通过这种方式,可以准确地读取按键的状态变化。