带你搞懂STM32中GPIO的8种工作模式

本文详细介绍了STM32中GPIO的8种工作模式,包括推挽输出、开漏输出、复用输出以及对应的输入模式(上拉、下拉、浮空和模拟输入)。这些模式有助于初学者理解和应用在不同场景下的单片机控制.
摘要由CSDN通过智能技术生成

学习过单片机的小伙伴对GPIO肯定不陌生,GPIO (general purpose input output)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚。在STM32中,GPIO的工作模式被细分为8种,对于初学者来讲,要理解它们可太难了!
跟着这篇文章学习,保证你几分钟时间就能轻松掌握这8种工作模式。

输入输出
首先,我们先要知道一个概念,GPIO的输入输出都是相对于MCU(单片机)来说的。

MCU给引脚信号,称之为输出
MCU接收引脚给过来的信号,则叫做输入。
知道这个之后,我们就可以进行下一步了,先从输出说起。

四种输出模式
1、 推挽输出
我第一次听到推挽这个词的时候,一脸懵逼,啥玩意儿啊!其实看英文反而好理解,push-pull,也就是推拉的意思。

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

2、开漏输出
这又是一个不好理解的词,开漏,是不是什么东西开了,然后漏出来了?

其实不是这样的,开是开路的意思。开路表示电路中存在一个断链,电流无法从一个点流到另一个点。

那么肯定有小伙伴会有疑问,开路和断路有啥区别?

这里简单说明一下:

开路表示电路中不存在电流流动;
在这里插入图片描述
断路表示电路中某一部分不通过电流流动,但是电路中仍然存在其他电流流动的路径
在这里插入图片描述
我们知道,MOS管的三个极分别是栅极(G)、源极(S)和漏极(D)。这里的漏就是MOS三个极中的漏极。
在这里插入图片描述
开漏输出模式下,GPIO可以输出低电平,也可以输出高阻态。在此模式下,P-MOS始终处于关断状态。
在这里插入图片描述
当输出控制器将P-MOS关断、N-MOS导通时,此时输出接VSS,输出低电平
在这里插入图片描述
当输出控制器将P-MOS关断、N-MOS关断时,相当于什么都没接,此时输出浮空,相对于其它点的电阻无穷大,呈现高阻态,可以理解为开路
在这里插入图片描述
应用场景:适用于多个设备共享同一信号线,如I2C通信协议

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

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

四种输入模式
1、上拉输入
你可以把输入驱动器框中,跟VDD和VSS连接的电阻,想象成两个弹簧。

当VDD的开关闭合时,上拉电阻接通VDD,此时弹簧向上拉。

可以读取I/O引脚状态,默认为高电平。
在这里插入图片描述
应用场景:常用于矩阵键盘或按钮输入

2、下拉输入
当VSS的开关闭合时,下拉电阻接通VSS,此时弹簧向下拉。

可以读取I/O引脚状态,默认为低电平。
在这里插入图片描述
应用场景:如按钮开关连接到地时的检测

3、浮空输入
当VDD和VSS的开关都断开时,此时弹簧既不向上拉,也不向下拉,处于一种悬空的状态。

浮空输入状态下,读取该端口的电平是不确定的。
在这里插入图片描述
应用场景:常用于接收来自开关、键盘或其他数字接口的信号

4、模拟输入
从图示可以看到,之前的3种模式,输入的信号都经过了TTL施密特触发器,把缓慢变化的模拟信号转换成阶段变化的数字信号。而这种模式,信号没有经过施密特触发器,直接接到片上外设。

相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。

通俗来讲就是,别的模式只能读取0和1,而模拟输入可以读取到0-1的变化区间。
在这里插入图片描述
主要应用:读取来自传感器(如温度传感器、电位计)的模拟信号

我们一些喜欢嵌入式的朋友一起建立的一个技术交流平台,本着大家一起互相学习的心态而建立,不太成熟,希望志同道合的朋友一起来。

在这里插入图片描述

  • 52
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就爱吃夜宵

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值