STM32 GPIO 中8种配置模式

在 STM32 单片机开发中,GPIO(通用输入输出口)是最常用、最基础的功能之一。无论你是控制一个 LED 灯,还是采集传感器数据,GPIO 都扮演着桥梁的角色。

不过,STM32 的 GPIO 并不只有"输入"和"输出"这两种简单的状态。它提供了多达八种不同的配置模式,满足不同应用场景的需求。

STM32 GPIO 配置模式对照表

模式名称 性质 特征描述
浮空输入 数字输入 可读取引脚电平,若引脚悬空,则电平不确定
上拉输入 数字输入 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平
下拉输入 数字输入 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平
模拟输入 模拟输入 GPIO无效,引脚直接接入内部ADC
开漏输出 数字输出 可输出引脚电平,高电平为高阻态,低电平接VSS(地)
推挽输出 数字输出 可输出引脚电平,高电平接VDD,低电平接VSS
复用开漏输出 数字输出 由片上外设控制,高电平为高阻态,低电平接VSS
复用推挽输出 数字输出 由片上外设控制,高电平接VDD,低电平接VSS

一、模拟输入模式(Analog Input)

模式名_AIN
类型 :输入
适合:读取模拟信号(非0/1)

这种模式下,引脚连接到 ADC(模数转换器)模块,专门用来读取外部传感器的模拟电压值。因为模拟信号是连续的电压(如1.8V、2.4V),而不是0或1,所以它不会进入数字输入寄存器。

特点

  • 用于电压检测、传感器读取
  • 无法读取为0或1
  • 功耗较低,适合低功耗模式

常见应用

  • 电池电压采集
  • 光敏/温度传感器
  • 电位器读取

二、浮空输入模式(Floating Input)

模式名_IN_FLOATING
类型 :输入
适合:外部驱动信号完全决定电平

浮空输入就像是"放空"的状态,内部没有任何上拉或下拉电阻,完全依赖外部输入。如果没有外部驱动,它就会处于不稳定的漂浮状态,容易受干扰。

特点

  • 悬空时电平不确定
  • 响应灵敏,但易受干扰

常见应用

  • 串口RX接收脚
  • 外设输入端口(有固定电平输出的设备)

三、上拉输入模式(Input Pull-Up)

模式名_IPU
类型 :输入
适合:需要默认高电平的输入检测

该模式内部通过上拉电阻把引脚默认拉到高电平,当外部接地或按键按下后,电平变为低。这就避免了引脚悬空带来的不确定性。

特点

  • 默认电平为高
  • 不需要外接上拉电阻

常见应用

  • 按键检测(接地触发)
  • 控制信号输入(高电平空闲)

四、下拉输入模式(Input Pull-Down)

模式名_IPD
类型 :输入
适合:需要默认低电平的输入检测

与上拉相反,该模式默认电平为低电平,外部拉高才会被识别。

特点

  • 默认电平为低
  • 避免误触发逻辑高

常见应用

  • 反接按键输入
  • 需要低电平空闲的输入

五、开漏输出模式(Open-Drain Output)

模式名_OUT_OD
类型 :输出
适合:总线共享、双向通信

开漏输出就像是一个只能接地的开关。它能输出低电平,但高电平需要外部加一个上拉电阻"拉起来"。在多个设备共用一根线的场合,开漏是最佳选择。

特点

  • 只能主动输出低电平
  • 需要外部上拉电阻才能输出高电平
  • 支持"线与逻辑"------多个设备并联控制同一线

常见应用

  • I2C通信(SCL、SDA)
  • 总线合并/仲裁
  • 双向I/O(模拟C51口)

六、推挽输出模式(Push-Pull Output)

模式名_OUT_PP
类型 :输出
适合:驱动数字器件、控制外设

推挽输出内部有两个晶体管,能直接输出高或低电平。切换速度快,驱动能力强,是最常见的输出模式。

特点

  • 主动输出高/低电平
  • 能驱动负载(如LED、继电器)
  • 电平切换速度快

常见应用

  • 点亮LED灯
  • 控制蜂鸣器、电机
  • 向外输出数据(SPI、PWM等)

七、复用开漏输出模式(Alternate Function Open-Drain)

模式名_AF_OD
类型 :外设复用
适合:I2C总线通信等外设功能

这是开漏输出的变种,适用于外设控制时,比如I2C通信线。STM32内部将GPIO复用给某个外设,同时保持开漏特性。

特点

  • 由外设控制GPIO行为
  • 仍然需要外部上拉电阻

常见应用

  • I2C总线SCL、SDA引脚

八、复用推挽输出模式(Alternate Function Push-Pull)

模式名_AF_PP
类型 :外设复用
适合:高速通信输出

和上面类似,只不过这次的输出方式是推挽。适合速度要求高、信号完整性要求强的外设输出,比如UART、SPI等。

特点

  • 外设主控,GPIO为输出端
  • 可输出清晰的高低电平

常见应用

  • SPI总线(SCK、MOSI)
  • UART的TX脚
  • PWM输出控制

总结对比一览表

模式名称 输入/输出 默认电平 是否需外接电阻 适用场景
模拟输入 输入 采集模拟电压,如ADC
浮空输入 输入 不确定 外部驱动明确的输入
上拉输入 输入 否(内部上拉) 按键、默认高状态
下拉输入 输入 否(内部下拉) 按键、默认低状态
开漏输出 输出 悬空/低 I2C通信、多设备共线
推挽输出 输出 高/低 控制LED、蜂鸣器、继电器
复用开漏输出 外设输出 悬空/低 I2C接口、开漏功能外设
复用推挽输出 外设输出 高/低 SPI/UART等高速接口

如何选择GPIO模式?

  • 要采集传感器的模拟信号 → 模拟输入
  • 接按键/开关等外部控制 → 上拉输入或下拉输入
  • 输出控制信号给LED、继电器 → 推挽输出
  • 多个模块共用一根信号线 → 开漏输出
  • 用作I2C、SPI、UART通信 → 使用对应的复用模式(AF_OD / AF_PP)

小结

STM32 GPIO 的强大之处就在于它的灵活性。不同的配置方式对应不同的电气行为和通信需求。理解这些模式的区别和用途,是STM32开发路上必须掌握的一项基础技能。


相关推荐
玩转以太网2 小时前
基于 W55MH32Q-EVB 实现 FatFs 文件系统+FTP 服务器
服务器·单片机·物联网
小郝 小郝3 小时前
【51单片机】萌新持续学习中《矩阵 密码锁 点阵屏》
嵌入式硬件·学习·51单片机
猫猫的小茶馆4 小时前
【STM32】CubeMX(十三):RT-THREAD
stm32·单片机·嵌入式硬件·mcu·mongodb·51单片机·智能硬件
源远流长jerry5 小时前
STM32之DMA详解
linux·网络·c++·stm32·单片机·嵌入式硬件
专属熊熊先生6 小时前
Allegro17.4导出带有NET的PDF文档及组装样式图
笔记·嵌入式硬件·学习
小小少年1238 小时前
基于51单片机的DS18B20大棚温度监控系统
stm32·单片机·嵌入式硬件
北极有牛8 小时前
keil添加文件夹
单片机
逼子格11 小时前
【Protues仿真】定时器
单片机·嵌入式硬件·51单片机·定时器·硬件工程师·硬件工程师真题·at89c52
JasmineX-113 小时前
STM32的Sg90舵机
c语言·stm32·单片机·嵌入式硬件
不爱学英文的码字机器14 小时前
[CS创世SD NAND征文] CS创世CSNP1GCR01-AOW在运动控制卡中的高可靠应用
人工智能·嵌入式硬件·物联网·iot