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开发路上必须掌握的一项基础技能。


相关推荐
echo_pen20 分钟前
蓝桥杯----串口
单片机·蓝桥杯
小憩-2 小时前
【stm32】GPIO输入
stm32·单片机·嵌入式硬件
Ronin-Lotus2 小时前
嵌入式硬件篇---Openmv
嵌入式硬件
echo_pen3 小时前
蓝桥杯----超声波
单片机·蓝桥杯
四谎真好看3 小时前
第六章第二节 定时器定时中断 & 定时器外部时钟
stm32·单片机·嵌入式硬件·定时器·timer
qq10549415163 小时前
江协科技STM32 14-1 WDG看门狗
科技·stm32·嵌入式硬件
景彡先生5 小时前
STM32启动流程详解:从复位到main函数的完整路径
stm32·单片机·嵌入式硬件
安庆平.Я6 小时前
STM32——启动过程浅析
stm32·单片机·嵌入式硬件
Python小老六6 小时前
stm32是如何实现电源控制的?
stm32·单片机·嵌入式硬件