STM32-GPIO八种输入输出模式

GPIO八种输入输出模式

参考: https://blog.csdn.net/baidu_37366055/article/details/80060962
https://www.cnblogs.com/lweleven/p/mcuioout.html

输入模式

  • 输入浮空 GPIO_Mode_IN_FLOATING
  • 输入上拉 GPIO_Mode_IPU
  • 输入下拉 GPIO_Mode_IPD
  • 模拟输入 GPIO_Mode_AIN

输出模式

  • 推挽输出 GPIO_Mode_Out_PP
  • 开漏输出 GPIO_Mode_Out_OD
  • 开漏复用 GPIO_Mode_AF_OD
  • 推挽复用 GPIO_Mode_AF_PP

在这里插入图片描述

1. 输入浮空

浮空,顾名思义,就相当与此端口在默认情况下什么都不接,呈高阻态。浮空最大的特点就是电压的不确定性,它可能是0V,也可能是VCC,还可能是介于两者之间的某个值(最有可能)。

2. 输入上拉

将不确定的信号通过一个电阻钳位在高电平。没有输入或输入为高电平时是高电平,输入为低电平时就是低电平。
在这里插入图片描述

3. 输入下拉

将不确定的信号通过一个电阻钳位在低电平。没有输入或输入为低电平时是低电平,输入为高电平时就是高电平。
在这里插入图片描述

4. 模拟输入

信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。比如传送给ADC模块,由ADC采集电压信号。
在这里插入图片描述

5. 推挽输出

所谓的推挽输出模式,是根据输出控制的两个MOS管的工作方式来命名的。在该结构中输入高电平时,经过反向后,上方的P-MOS导通,下方的N-MOS关闭,对外输出高电平;而在该结构中输入低电平时,经过反向后,N-MOS管导通,P-MOS关闭,对外输出低电平。当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0V,高电平为3.3V。
在这里插入图片描述

6. 开漏输出

在开漏输出模式时,上方的P-MOS管完全不工作。如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出接地,若控制输出为1 (它无法直接输出高电平)时,则P-MOS管和N-MOS管都关闭,所以引脚既不输出高电平,也不输出低电平,为高阻态。正常使用时必须外部接上拉电阻,由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电压。

Tips:推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。开漏输出一般应用在I2C、SMBUS通讯等需要线与功能1的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5伏的高电平,就可以在外部接一个上拉电阻,上拉电源为5伏,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5伏的电平。

7. 开漏复用

可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),端口必须配置成复用功能输出模式。

8. 推挽复用

同开漏复用。


  1. 若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平。 ↩︎

猜你喜欢

转载自blog.csdn.net/lblmlms/article/details/109244694