当前位置: 首页 > news >正文

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


http://www.dtcms.com/a/311326.html

相关文章:

  • 图漾AGV行业常用相机使用文档
  • 快速了解机器学习
  • 【机器学习】非线性分类算法详解(下):决策树(最佳分裂特征选择的艺术)与支持向量机(最大间隔和核技巧)
  • Python Pandas.unique函数解析与实战教程
  • mac中使用gvm install没有效果
  • 【Android】进度条ProgressBar 可拖拽进度条Seekbar
  • 云运维解决方案(word)
  • Python 入门指南:从零基础到环境搭建
  • 数字化转型-灯塔工厂建设
  • StyleX:Meta推出的高性能零运行时CSS-in-JS解决方案
  • 数字图像处理(冈萨雷斯)第三版:第一章绪论主要内容和重点——(数字图像处理的一些概念)
  • C语言数据结构(4)单链表专题2.单链表的应用
  • 什么是需量跟随
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路上头盔的检测识别(C#代码,UI界面版)
  • Linux 嵌入式开发全流程
  • C语言(长期更新)第7讲:VS实用调试技巧
  • LVGL + ESP-Brookesia 在Windows下的编译和运行
  • Elasticsearch+Logstash+Filebeat+Kibana单机部署
  • 卡尔曼滤波轨迹跟踪算法与MATLAB实现
  • GitHub 趋势日报 (2025年08月01日)
  • Kubernetes Service 全面详解:从概念到实践
  • 前端Canvas实现图片水印全攻略:从基础到高级防伪技术
  • 解决mac在安装nvm过程中可能遇到的一些问题
  • 深度学习核心:卷积神经网络 - 原理、实现及在医学影像领域的应用
  • 【读论文】从Qwen3技术报告到Qwen3-30B-A3B 模型的深度解读
  • 我的世界进阶模组教程——物品(2)
  • sqli-labs:65个关卡的文章汇总
  • 2025牛客多校第六场 D.漂亮矩阵 K.最大gcd C.栈 L.最小括号串 个人题解
  • C++冰箱管理实战代码
  • 【Flutter3.8x】flutter从入门到实战基础教程(八):公共state的集中管理机制