GPIO的8种工作方式:一、4 种输入模式1.1 Floating Input 浮空输入1.2 Pull-up Input 上拉输入1.3 Pull-down Input 下拉输入1.4 Analog Input 模拟输入二、4种输出模式2.1 General Push-Pull Output 推挽输出2.2 General Open-Drain Output 开漏输出2.3 Alternate General Push-Pull Output 复用推挽输出2.4 Alternate General Open-Drain Output 复用开漏输出
4种输入模式原理及特点
1. 浮空输入(Floating Input)
电路原理:引脚内部既不接上拉电阻(到 VDD),也不接下拉电阻(到 GND),直接连接到施密特触发器(数字信号整形电路)。
核心特点:外部信号直接决定引脚电平,无外部信号时,引脚电平随空间电磁干扰波动(“浮空” 即 “悬浮不定”)。
信号路径:外部信号 → 施密特触发器 → 内部数字电路(如寄存器)。
例:外部接按键且已串联上拉电阻时,无需内部电阻,用浮空输入检测按键状态。2. 上拉输入(Pull-up Input)
电路原理:引脚内部通过开关接入上拉电阻(电阻值通常为 30-50kΩ,连接到 VDD),同时连接施密特触发器。
核心特点:无外部信号时,上拉电阻将引脚 “拉到高电平”(接近 VDD);外部输入低电平时(如接地),引脚被拉低。
关键作用:通过内部电阻消除 “悬空状态”,确保无外部信号时电平稳定。
例:按键一端接引脚,另一端接地,用上拉输入时,按键未按则引脚为高电平,按下为低电平。3. 下拉输入(Pull-down Input)
电路原理:与上拉输入对称,内部接入下拉电阻(连接到 GND),同时连接施密特触发器。
核心特点:无外部信号时,下拉电阻将引脚 “拉到低电平”;外部输入高电平时,引脚被拉高。
适用场景:外部信号为高电平有效(如传感器输出高电平触发中断),避免无信号时电平波动。4. 模拟输入(Analog Input)
电路原理:引脚直接连接到 ADC(模数转换器)的模拟信号通道,断开所有内部上拉 / 下拉电阻和施密特触发器(数字电路被隔离)。
核心特点:保留外部信号的 “连续电压特性”(而非转为 0/1 数字信号),确保 ADC 能采样到真实的模拟电压(如 0-3.3V 的渐变信号)。
例:连接光敏电阻(输出随光照变化的电压),用模拟输入让 ADC 读取光照强度。
4种输出模式原理及特点
5. 推挽输出(General Push-Pull Output)
电路原理:输出级由两个互补晶体管(NPN 和 PNP)组成:
输出高电平时,NPN 管截止,PNP 管导通,引脚通过 PNP 管连接到 VDD(输出高电平≈VDD);
输出低电平时,PNP 管截止,NPN 管导通,引脚通过 NPN 管连接到 GND(输出低电平≈0V)。
核心特点:能主动输出高 / 低电平,驱动能力强(拉电流和灌电流较大,通常可达 20mA),无需外部电阻。
例:直接驱动 LED(高电平点亮时,PNP 管提供拉电流;低电平点亮时,NPN 管提供灌电流)。6. 开漏输出(General Open-Drain Output)
电路原理:输出级只有 NPN 晶体管,PNP 晶体管被移除:
输出低电平时,NPN 管导通,引脚接地(低电平≈0V);
输出高电平时,NPN 管截止,引脚处于 “高阻态”(相当于断开),需通过外部上拉电阻连接到 VDD 才能输出高电平。
核心特点:不能主动输出高电平(依赖外部电阻),但支持 “线与” 功能(多个开漏输出引脚接同一总线,任一输出低电平则总线为低)。
例:I2C 总线的 SDA/SCL 线,多个设备通过开漏输出共享总线,避免信号冲突。7. 复用推挽输出(Alternate Function Push-Pull)
电路原理:输出级结构与 “推挽输出” 相同(互补晶体管),但控制信号来源从 “GPIO 控制器” 切换到 “片上外设”(如定时器、SPI、UART 等)。
核心特点:引脚功能被 “复用” 给外设,由外设直接驱动推挽输出级,兼顾外设功能和强驱动能力。
例:定时器的 PWM 输出引脚配置为复用推挽,由定时器直接控制高低电平切换,驱动电机调速。8. 复用开漏输出(Alternate Function Open-Drain)
电路原理:输出级结构与 “开漏输出” 相同(仅 NPN 晶体管),但控制信号来自片上外设,而非 GPIO 控制器。
核心特点:外设通过开漏结构输出信号,需外部上拉电阻,适合需要线与或电平转换的外设场景。
例:I2C 外设的引脚配置为复用开漏,由 I2C 控制器控制输出,通过外部上拉电阻实现多设备通信。