STM32:初识GPIO

youziawa 发布于 2025-09-27 71 次阅读


从今天开始,我将开始更新有关于STM32的相关内容。如有不足请在评论区联系我,感谢大家的指正。

ps.此笔记使用STM32F407VET6开发板

什么是GPIO?

GPIO,即General Porpose Intput Output。是通用输入输出端口的简称。可以通过软件控制其输出和输入。stm32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。GPIO是STM32最基本的外设之一。

GPIO的工作模式

高电平与低电平:

在进行GPIO的功能讲解之前,我们需要先了解高/低电平这一概念:

在单片机中,高低电平是用来表示数字信号的两个不同状态。通常情况下,高电平对应于逻辑“1”,而低电平对应于逻辑“0”。具体的电压值取决于单片机的电源电压和它的电气标准。例如,在TTL(晶体管-晶体管逻辑)电平系统中,一般认为高电平是在2.4V以上(最高可达5V),而低电平是在0.4V以下

GPIO的输入功能:

GPIO的输入功能分为上拉输入、下拉输入、浮空输入以及模拟输入四种,下面将会一一说明。

上拉输入:

IO内部闭合上拉电阻的开关,此时如果IO口外部没有信号输入或者引脚悬空,IO口默认为高电平,如果I/O口输入低电平,那么引脚就为低电平,MCU读取到的就是低电平。即只有在外部电路输入低电平的时候 CPU读取到的才是低电平

下拉输入:

IO内部闭合下拉电阻开关,此时如果IO口外部没有信号输入或者引脚悬空,IO口默认为低电平, 如果I/O口输入高电平,那么引脚就为高电平,MCU读取到的就是高电平。即只有在外部电路输入高电平的时候 CPU读取到的才是高电平

浮空输入:

浮空输入模式下,既不接上拉电阻,也不接下拉电阻,I/O端口的电平信号直接进入输入数据寄存器。MCU直接读取I/O口电平。如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。这种情况下 IO引脚的电平状态完全由外部输入所决定,此时CPU可以通过读取数据的,操作来获取外部电路的工作状态。

模拟输入:

当GPIO引脚用于ADC采集电压的输入通道时,用作“模拟输入”功能,此时信号不经过施密特触发器,直接直接进入ADC模块,并且输入数据寄存器为空 ,CPU不能在输入数据寄存器上读到引脚状态。

注:当GPIO用于模拟功能时,引脚的上、下拉电阻是不起作用的,这个时候即使配置了上拉或下拉模式,也不会影响到模拟信号的输入输出。
只有ADC和DAC会用到模拟输入。

GPIO的输出功能:

推挽输出:

在推挽输出模式时,N-MOS管和P-MOS管都工作,如果我们控制输出为低电平,则P-MOS管关闭,N-MOS管导通,I/O端口输出低电平,若控制输出为高电平,则P-MOS管导通N-MOS管关闭,I/O端口输出高电平。CPU往外写高电平”1”时,此时引脚输出一个高电平。CPU往外写低电平”0”时,此时引脚输出一个低电平

开漏输出:

在该模式下,引脚只能输出低电平,要输出高电平需要通过外部上拉电阻或其他方式。通常用于与外部器件连接。

推免复用:

GPIO不仅仅可以用作普通的 IO 口输出,还可以作为芯片上其他外设的特殊功能引脚,有些引脚可能可以用作多种不同功能,这种就叫做GPIO的复用,具体用作哪种功能,需要根据使用进行相应的配置。

开漏复用:

GPIO不仅仅可以用作普通的 IO 口输出,还可以作为芯片上其他外设的特殊功能引脚,有些引脚可能可以用作多种不同功能,这种就叫做GPIO的复用,具体用作哪种功能,需要根据使用进行相应的配置。


小结

输入模式:

(1)浮空输入   IO引脚的电平状态完全由外部输入所决定。
(2)上拉输入  只有在外部电路输入低电平的时候 CPU读取到的才是低电平。
(3)下拉输入  只有在外部电路输入高电平的时候 CPU读取到的才是高电平。
(4)模拟输入  ADC和DAC用这个模式。

输出模式:

(1)开漏输出  只能输出低电平。
(2)开漏复用  复用功能是指GPIO口用作其他的外设的功能口线。
(3)推挽输出  输出1就输出高电平,输出0就输出低电平。
(4)推挽复用  复用功能是指GPIO口用作其他的外设的功能口线。