恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

STM32 GPIO输入输出模式到底有什么区别?一篇文章彻底搞懂浮空、上拉、下拉、推挽、开漏

  • 首页
  • 资讯中心
  • /
  • STM32 GPIO输入输出模式到底有什么区别?一篇文章彻底搞懂浮空、上拉、下拉、推挽、开漏

相关资讯

我用 Claude Code 写了半年代码:2026 年 AI 编程工作流实战复盘 2026/8/26 17:57:22
2026 年 MCP 协议彻底火了:用 Python 从零搭建你的第一个 AI Agent 工具链 2026/8/26 17:57:22
Agent 代码止步于本地调试?生产环境下的工程化缺陷与应对策略 2026/8/26 17:52:22

最新资讯

F5-TTS 推理报错终极排查:5 步定位修复无声、加载失败与配置错误
LRU 缓存妙用:Hypermind 如何用一张 Map 记住 5 万个节点的 45 秒活跃状态
OpenObserve 大数据量查询加速:4个清单式技巧缩短文件列表过滤延迟
InlineAttachment上传安全必修课:MIME白名单、文件名注入防御与5个常见陷阱
RevokeMsgPatcher 一键防撤回,PC 微信QQ 的消息撤不了
GPUIX元素完全参考:11个原生元素一次看懂(附代码示例)

今日推荐

Python random 模块常用函数详解:从入门到实战
Hermes接入团队协作后,我推翻了三个效率假设
免费AI大模型调教指南:打造专属网文写作助手

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

STM32 GPIO输入输出模式到底有什么区别?一篇文章彻底搞懂浮空、上拉、下拉、推挽、开漏

发布时间:2026/8/26 17:57:22
STM32 GPIO输入输出模式到底有什么区别?一篇文章彻底搞懂浮空、上拉、下拉、推挽、开漏 STM32 GPIO输入输出模式到底有什么区别一篇文章彻底搞懂浮空、上拉、下拉、推挽、开漏1. GPIO是什么在STM32开发中GPIOGeneral Purpose Input Output是最基础也是最常用的外设之一。GPIO中文名称通用输入输出接口简单来说GPIO就是STM32芯片与外部世界连接的“窗口”。通过GPIO可以实现读取外部传感器信号检测按键状态控制LED灯驱动继电器输出PWM波形连接UART、SPI、I2C等通信接口例如GPIO作为输入按键连接3.3V | 按键 | GPIO ------ | GNDSTM32通过读取GPIO电平判断按下 → GPIO0 释放 → GPIO1GPIO作为输出控制LEDSTM32 GPIO | LED | GNDGPIO输出高低电平控制LED亮灭。2. STM32 GPIO内部结构STM32的GPIO并不是一个简单的开关而是内部包含输入缓冲器输出驱动器上拉电阻下拉电阻多路复用器模拟开关内部结构简化STM32内部 输入 | | 外部引脚 ---- GPIO | | 输出 | 复用功能选择 | UART / SPI / I2C / PWM因此一个GPIO引脚可以有多个身份例如STM32的PA9普通GPIOPA9 | 输出高低电平复用PA9 | USART1_TX | 串口发送数据3. STM32 GPIO有哪些模式STM32 GPIO主要分为四大类输入模式浮空输入上拉输入下拉输入模拟输入输出模式推挽输出开漏输出复用模式连接内部外设USARTSPII2CTIM模拟模式用于ADC采样DAC输出结构如下GPIO | ┌───────────────┼───────────────┐ 输入 输出 复用 Floating Push-Pull USART Pull-up Open-Drain SPI Pull-down I2C | Analog | ADC4. GPIO输入模式详解4.1 浮空输入Floating Input浮空输入表示GPIO内部没有连接上拉或者下拉电阻。结构GPIO | | 外部信号特点GPIO电平完全由外部决定。例如外部输入3.3V GPIO1输入0V GPIO0但是如果GPIO没有连接任何东西GPIO ?可能01不稳定跳变原因引脚处于高阻状态很容易受到电磁干扰噪声电荷影响应用适合外部已经提供稳定电平的信号例如传感器输出传感器 | GPIO5. 上拉输入Pull-Up Input上拉输入内部通过电阻连接到3.3V。结构3.3V | 电阻 | GPIO -------- | 按键 | GND没有按键GPIO被拉高GPIO1按键按下GPIO接地GPIO0典型应用按键检测程序if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)0){//按键按下}优点默认状态确定不容易受到干扰6. 下拉输入Pull-Down Input下拉输入内部电阻连接到GND。结构GPIO | | 电阻 | GND默认GPIO0输入高电平GPIO1应用例如检测外部触发信号。没有信号GPIO0收到信号GPIO17. GPIO输出模式STM32主要有两种输出推挽输出开漏输出8. 推挽输出Push-Pull推挽输出是STM32最常用输出方式。内部结构3.3V | PMOS | GPIO --------● | NMOS | GND输出高电平PMOS打开3.3V | GPIOGPIO输出1输出低电平NMOS打开GPIO | GNDGPIO输出0特点优点输出能力强速度快电平稳定缺点多个设备不能直接连接。应用LED控制GPIO | LED | GNDPWM输出例如电机控制舵机控制9. 开漏输出Open Drain开漏输出内部只有NMOS管。结构3.3V | 上拉电阻 | GPIO ------- | NMOS | GND输出低NMOS导通GPIO0输出高NMOS关闭GPIO悬空因此开漏输出必须外接上拉电阻。10. 为什么I2C使用开漏输出I2C总线3.3V | 上拉电阻 | SDA ---------------- | 多个设备原因多个设备可以共享一根线。如果设备A拉低SDA0设备B释放不影响这样可以避免两个设备同时输出高低电平造成短路。因此I2C必须开漏输出11. 推挽输出和开漏输出区别项目推挽输出开漏输出输出高电平主动输出需要上拉输出低电平主动输出主动拉低驱动能力强弱速度快慢是否适合多设备否是常用场景LED/PWMI2C通信简单记忆需要驱动负载 选择推挽 需要多人共享总线 选择开漏12. GPIO复用模式Alternate FunctionGPIO不仅可以普通输入输出。还可以连接内部外设。例如PA9普通模式GPIO输出复用模式PA9 | USART1_TX | 串口发送常见复用GPIO功能USART_TX串口发送USART_RX串口接收SPI_SCKSPI时钟I2C_SDA数据线TIM_CHPWM输出13. GPIO模式如何选择实际开发中可以按照下面选择读取信号例如按键传感器选择输入模式 上拉/下拉控制设备例如LED继电器蜂鸣器选择推挽输出通信总线例如I2CSMBUS选择开漏输出使用内部外设例如UARTSPIPWM选择复用模式(AF)14. 总结STM32 GPIO虽然看起来简单但是里面包含大量硬件设计。重点记忆输入 看外部电平 输出 看驱动能力 推挽 主动输出高低电平 开漏 只能主动拉低需要上拉 通信 优先考虑复用功能掌握GPIO模式是学习STM32UART通信I2C通信SPI通信PWM控制ADC采集的基础。对于嵌入式开发来说GPIO不仅是“控制一个IO口”更是理解MCU内部硬件结构的重要入口。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号