MCU GPIO八种工作模式讲解

本文详细介绍了STM32的GPIO功能,包括其八种工作模式(如上拉输入、下拉输入、浮空输入等)、内部逻辑结构以及在不同场景的应用,重点突出了模拟输入和不同输出模式的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPIO 是通用输入/输出端口的简称,这里以 STM32 为例进行说明,其他的单片机功能上都是大同小异,学会 STM32 的 GPIO,就可以触类旁通。

GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

一、STM 32 的八种 GPIO 口模式

  • 1) GPIO_Mode_IPU 上拉输入;
  • 2) GPIO_Mode_IPD 下拉输入;
  • 3) GPIO_Mode_IN_FLOATING 浮空输入;
  • 4) GPIO_Mode_AIN 模拟输入;
  • 5) GPIO_Mode_Out_OD 开漏输出;
  • 6) GPIO_Mode_Out_PP 推挽输出;
  • 7) GPIO_Mode_AF_OD 复用开漏输出;
  • 8) GPIO_Mode_AF_PP 复用推挽输出。

二、STM32 普通 GPIO 内部逻辑图

在这里插入图片描述
STM32 普通 GPIO 内部逻辑

1、保护二极管

IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。
当引脚电压高于VDD时,上方的二极管导通;
当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
也叫钳位二极管。

2、P-MOS 管和 N-MOS 管

由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

3、TTL 肖特基触发器

信号经过触发器后,模拟信号转化为 0 和 1 的数字信号。
但是,当 GPIO 引脚作为 ADC 采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器 进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;

如果没有标注“FT”,就代表着不兼容5V。
比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

三、STM 32 GPIO 八种工作模式

1、上拉输入GPIO_Mode_IPU

你可以把输入驱动器框中,跟VDD和VSS连接的电阻,想象成两个弹簧。
当VDD的开关闭合时,上拉电阻接通VDD,此时弹簧向上拉。
可以读取I/O引脚状态,默认为高电平。
此模式检测到电平默认为高,可以检测到由高到低的电平变化。
在这里插入图片描述
应用场景:常用于矩阵键盘或按钮输入

2、下拉输入GPIO_Mode_IPD

当VSS的开关闭合时,下拉电阻接通VSS,此时弹簧向下拉。
可以读取I/O引脚状态,默认为低电平。
此模式检测到电平默认为低,可以检测到由低到高的电平变化。
在这里插入图片描述
应用场景:如按钮开关连接到地时的检测

3、浮空输入 GPIO_MODE_IN_FLOATIN

当VDD和VSS的开关都断开时,此时弹簧既不向上拉,也不向下拉,处于一种悬空的状态。
浮空输入状态下,读取该端口的电平是不确定的。
此模式最常用的是检测按键,可以接收高低电平。但容易被干扰。
在这里插入图片描述

应用场景:常用于接收来自开关、键盘或其他数字接口的信号

4、模拟输入 GPIO_Mode_AIN

从图示可以看到,之前的3种模式,输入的信号都经过了TTL施密特触发器,把缓慢变化的模拟信号转换成阶段变化的数字信号。而这种模式,信号没有经过施密特触发器,直接接到片上外设。
相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。
通俗来讲就是,别的模式只能读取0和1,而模拟输入可以读取到0-1的变化区间。
此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。
在这里插入图片描述
主要应用:读取来自传感器(如温度传感器、电位计)的模拟信号

5、开漏输出GPIO_Mode_Out_OD

我们知道,MOS管的三个极分别是栅极(G)、源极(S)和漏极(D),开漏中的漏就是MOS三个极中的漏极。
开漏输出用于输出低电平,高电平靠外部上拉电阻电压决定,适用于快速切换电压的外部电路结构。
开漏输出模式下,GPIO可以输出低电平,也可以输出高阻态。
在此模式下,P-MOS始终处于关断状态。

在这里插入图片描述
当输出控制器将P-MOS关断、N-MOS导通时,此时输出接VSS,输出低电平
在这里插入图片描述
当输出控制器将P-MOS关断、N-MOS关断时,相当于什么都没接,此时输出浮空,相对于其它点的电阻无穷大,呈现高阻态,可以理解为开路
在这里插入图片描述
应用场景:适用于多个设备共享同一信号线,如I2C通信协议

6、推挽输出GPIO_Mode_Out_PP

push-pull,也就是推拉的意思

推挽输出模式下,GPIO可以输出高电平,也可以输出低电平。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1f833d0ab2974149ae68436579ed2d44.png

当输出高电平时,P-MOS导通,电流按下图箭头所示流出去,称之为推,把电流推出去。
在这里插入图片描述
当输出低电平时,N-MOS导通,电流按下图箭头所示流进来,称之为挽,把电流挽回来。
在这里插入图片描述
应用场景:适用于通用的数字输出场景,如点亮LED灯

7、复用开漏输出GPIO_Mode_AF_OD

和开漏输出同理,只不过此时的输出控制器由片上外设控制
复用 IIC 时候选择复用开漏输出,因为开漏输出可以“线与”
在这里插入图片描述
应用场景:适用于复用功能接口,且需要多设备共享通讯总线(如I2C)的场景

8、复用推挽输出GPIO_Mode_AF_PP

和推挽输出同理,只不过此时的输出控制器由片上外设控制,
其他复用比如 SPI 等可以选择复用推挽输出。
在这里插入图片描述
应用场景:允许GPIO引脚用于微控制器的特定功能,如SPI、I2C、USART等接口,同时保持推挽输出的特性


整理自----韵琳电子/ 知微之见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值