聊聊GPIO 工作模式

嵌入式开发中,GPIO(General-Purpose Input/Output)是最基础也最常用的功能模块之一。你可以把它想象成微控制器伸出来的无数根"手脚":既可以用它输出 信号去点亮LED、驱动外设,也可以用它输入信号来检测按键、读取传感器状态。

输出模式-主动出击

1)推挽输出 (Push-Pull Output)

Plain 复制代码
      VDD(3.3V)
        │
        ├───[PMOS]───┐
        │            │
        │            ├───● GPIO引脚
        │            │
        └───[NMOS]───┘
        │
       GND(0V)

工作原理:

  • 输出高电平(1):PMOS打开,NMOS关闭 → 引脚接电源VDD(3.3V)
  • 输出低电平(0):NMOS打开,PMOS关闭 → 引脚接地GND(0V)

使用场景:控制LED灯、数字信号输出

2)开漏输出 (Open-Drain Output)

Plain 复制代码
       VDD(内部无连接!)
        │
        │
        X ← [PMOS被拆除]
        │
        └───[NMOS]───● GPIO引脚
        │
       GND

工作原理

  • 输出低电平:NMOS打开 → 接地
  • 输出高电平:NMOS关闭 → 悬空(高阻态)→ 必须外接上拉电阻到VDD才能输出高电平

使用场景:I²C/SMBus 总线 (多设备共享线路)、驱动高压设备 (外接上拉到 5V/12V)、多主机通信

输入模式-竖起耳朵听

1)浮空输入 (Floating Input)

Plain 复制代码
       VDD
        │
        │
        X ← 无内部上拉
        │
GPIO引脚 ┼───● 输入检测电路
        │
        X ← 无内部下拉
        │
       GND
  • 引脚完全断开内部电阻
  • 电平状态完全由外部电路决定

必须使用场景:ADC 模拟信号采样

2)上拉/下拉输入 (Pull-up/Pull-down Input)

Plain 复制代码
上拉输入结构:

       VDD
        │
        │
        R(≈40kΩ)← 内部上拉电阻
        │
GPIO引脚 ┼───● 输入检测电路
        │
        X
        │
       GND
下拉输入结构:

       VDD
        │
        │
        X
        │
GPIO引脚 ┼───● 输入检测电路
        │
        R(≈40kΩ)← 内部下拉电阻
        │
       GND

工作原理

  • 上拉输入:无外部信号时默认高电平(3.3V)
  • 下拉输入:无外部信号时默认低电平(0V)

按键检测:按键接地型电路、按键接VCC型电路

注意

  1. 开漏输出必须外接上拉电阻:阻值依总线速度和功耗选择 (常用 4.7KΩ)
  2. 推挽输出禁止并联:会导致 VDD-GND 短路损坏MOS管
  3. 输入电平容限:
    1. 5V容忍引脚:可承受 5V 输入
    2. 非容忍引脚:输入电压 ≤ VDD+0.3V
  4. 模式切换:读输入前需切换为输入模式(尤其输出转输入时)
  5. 静电防护:未使用引脚设为下拉/推挽输出低电平
相关推荐
aramae14 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
AOI小白新手上路15 小时前
韦东山 01_ARM架构与编程_2-1_处理器的区分MCU_MPU_AP_内容总结
嵌入式硬件
ysu_031416 小时前
TinyML 模型部署:从 Edge Impulse 到 STM32F103
驱动开发·stm32·嵌入式硬件·mcu·硬件架构·硬件工程·dsp开发
汉克老师18 小时前
GESP2026年9月认证C++六级( 第三部分编程题(1、数组划分))精讲
c++·gesp·小学生·学c++编程
千里码aicood18 小时前
基于PLC与机器视觉的智能分拣控制系统设计
c++·自动化·plc
zjxtxdy18 小时前
SPI通信协议
笔记·单片机
漂流瓶jz18 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
朽棘不雕18 小时前
进一步了解模板
c++
恒锐丰科技林技术员21 小时前
EG1196S:高压宽输入降压 DC‑DC 芯片,电动车工业电源的优选方案
经验分享·嵌入式硬件·硬件工程
汉克老师21 小时前
CSP-J 2026 初赛试题解析(第一部分:选择题(8-15))精讲
c++·csp-j·小学生·学c++编程