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

STM32的GPIO的简单原理

原文链接:STM32的GPIO的简单原理 | Colin Gretzky的博客

## 原理图

本文使用的芯片是STM32F103C8T6芯片,可供各位参考

本文仅做知识笔记整理,如有错误或不严谨请指出

这里借用一下keysking老师的原理图

### 程序控制电路的方式

实际上我们平时用代码控制的引脚,走的是这样一个流程:

程序——>寄存器——>电路

寄存器相当于一个小秘书,专门在程序与电路之间传话

程序修改寄存器中的数据和状态,而电路通过读取寄存器的数据来知道目前的芯片、其他电路的情况,这就是**程序控制电路的方式**

### GPIO口的保护二极管

GPIO口引脚旁有两个保护二极管,主要是用来承受瞬间的高电压,如果长时间处在不合理的电压还是会对电路和芯片造成影响

当然也有一些引脚是可以承受5V的高电压的,具体可以查看官方芯片指导手册对于引脚的定义

当电压大于3.3V时上端的二极管导通,电流流向VDD电源内部由电源消化

当电压小于0V时下端的二极管导通,电流流向VSS消化

## 输入输出模式

在STM32的开发中GPIO口总共有八种常用的输入输出模式,都可以通过程序端控制:

1. 推挽输出

2. 开漏输出

3. 复用推挽输出

4. 复用开漏输出

5. 浮空输入

6. 上拉输入

7. 下拉输入

8. 模拟输入

### 输出端

先看输出端的两个MOS管,分别是上端P-MOS管连接着高电平3.3V,然后是下端的N-MOS管连接的地,它们就相当于两个开关,分别对外输出高电平与低电平

**推挽输出**

当P管导通N管断开,3.3V与电路相连,输出的就是高电平,当N管导通P管断开,0V与电路相连,输出的就是低电平

这就是推挽输出的工作原理,可以通过芯片输出一些稳定的电压和电流用来驱动一些合适的对于功率要求没那么高的小元器件,而缺点也很明显就是只能输出3.3V电压

**开漏输出**

此时就只有N管工作,P管相当于就处在断路的情况

如果通过程序控制输出高电平,则N管断开,整个电路处于一个断开的高阻态情况,无法输出电流

如果通过程序控制输出低电平,则N管接通,地接入线路,元器件的两端没有产生电压差,电流仍然为0,若负载的另一端接外部5V高电压,此时就形成了电压差,能够驱动需要功率较大的元器件

开漏输出的优点相比之下,很明显就是可以更灵活的输出电压,但缺点就是需要一个外部的电源。也就是实际上开漏输出只提供了一个地电位

但这里最好选用能容忍5V电压的I/O口,不然长时间的高电压使上端保护二极管长时间接通还是会对电路及芯片产生一定的影响

在原理图的左边可以看到实际上除了片上寄存器以外,片上的外设也能控制I/O口的高低电平,当双方同时控制时,输出驱动器就不知道该听谁的

面对这个问题自然就产生了**复用推挽输出**与**复用开漏输出**

### 输入端

在输入驱动器这一块控制上下拉的就只有一个上拉电阻和下拉电阻

当上拉输入的时候上拉电阻启用,下拉输入的时候下拉电阻启用

而浮空输入的时候上拉下拉电阻都不启用,只由外部的电路决定,类似输出端的开漏输出模式,可以有更好的灵活性实现更多可能

再往前就是TTL肖特基触发器或叫施密特触发器,其作用就是稳定输入的电平,因为输入的电平很多时候会没有理想的那么稳定,产生的抖动会影响判断

**可以简单的理解:** 先设定3.3V为高电平,0V为低电平,但输入的电平很可能在这之间徘徊,所以我们设定两个参考线,一个是高参考电压一个是低参考电压,只有当输入电平高过高参考电压时才认为是高电平,当输入电平低过低参考电压时才认为是低电平,如果介于两者之间则维持此前的电平不变

这样就输出了稳定的电平到寄存器供芯片读取

不过不同于输出只能有一个控制源,输入的多个分支可以同时读取肖特基触发器上的电平,所以就没有复用输入

但还有一种情况是需要知道具体的电平变化模拟信号而非肖特基触发器处理过后的数字信号,所以产生了不同于其他的模拟输入,在肖特基触发器之前就已经产生分支读取了电平信息

http://www.gsyq.cn/news/1423394.html

相关文章:

  • ESP32驱动圆形TFT屏全攻略:从硬件连接到网络数据可视化
  • 树莓派Zero 2W驱动彩色电子墨水屏:打造低功耗智能信息中心
  • windows蓝屏代码大全
  • 告别ECharts兼容烦恼:在UniApp项目里用uCharts画图表的保姆级教程
  • Ubuntu 18.04工控机上网卡优先级冲突?一个metric值设置帮你搞定内外网同时访问
  • 别再只看EVM数值了!手把手教你计算5G NR中1024QAM的EVM门限(附Matlab代码)
  • 暗黑破坏神2存档编辑神器:三步解锁你的单机游戏新体验
  • 告别0xFF!STM32H743模拟SMBUS驱动BQ40Z50-R1的完整避坑指南
  • Windows Server 2019 Hyper-V实战:用戴尔R730XD快速创建并导出标准化虚拟机模板
  • Codex 使用codex++快速接入第三方模型
  • 如何快速备份微信聊天记录?WeChatExporter完整导出指南
  • 2026北京丰台区财税外包哪家好?TOP3正规机构实力对比! - 小柏云
  • 别再只用curve_fit做一元拟合了!手把手教你用Python搞定多元函数曲面拟合(附3D可视化代码)
  • Jetson AGX Orin 装不上 nvidia-jetpack?别慌,手把手教你修复源配置(附 jtop 查看版本)
  • HOT100力扣(40) 动态规划-爬楼梯
  • 2026毕节黄金回收实测排行|正规门店筛选与变现干货 - 资讯纵览
  • 毕业设计别再愁了!一个校园失物招领系统帮你搞定毕设(含JSP+SSM源码)
  • 除了重置密码,你的Grafana安全吗?从一次密码找回聊聊用户管理与数据库安全
  • 合肥全屋定制怎么选?5 大主流品牌优缺点对比 + 选购建议 - 资讯快报
  • 在 WSL 中部署 Claude Code 并开启 Agent Team 模式
  • 618发膜购物清单:高性价比的发膜推荐 - 资讯纵览
  • AI强大难鉴别,创作者被迫“自证清白”,水印方案也难万无一失
  • ROS小车GPS轨迹可视化:用Mapviz和天地图API打造高清卫星地图(避坑指南)
  • 从内部三极管到输出方波:一张图看懂NE555多谐振荡器工作原理,附Multisim仿真文件
  • 2026年东莞展示柜定制厂家推荐榜:珠宝/化妆品/手机/眼镜/精品/首饰/鞋子展示柜源头工厂实力解析 - 品牌企业推荐师(官方)
  • 终极Windows风扇控制指南:用FanControl告别电脑噪音与高温烦恼
  • 从‘扫掠’到‘自由化’:手把手教你搞定Abaqus复杂三维零件的结构化网格划分
  • 从滨松S15639到国产灵明光子:手把手教你读懂SiPM规格书里的关键参数(PDE、串扰、暗计数)
  • 沙龙级护理搬回家:顶级发膜品牌TOP3 - 资讯纵览
  • 炉石传说HsMod插件:55项功能完全指南,让你的游戏体验焕然一新!