STM32 GPIO的八大模式详解

一.GPIO的基本概念

GPIO是General Purpose Input/Output的缩写,中文为通用输入/输出。在数字电子系统中为常见的接口类型,用于与外部设备进行通信和控制。

GPIO的基本概念有以下几个方面:

引脚:GPIO接口通常由一组引脚组成,每个引脚都可以用作输入或输出。每个引脚都有一个唯一的标识符,如GPIO0、GPIO1等。

输入模式:当GPIO引脚配置为输入模式时,它可以接收外部设备发送的电信号。通常,输入引脚可以读取高电平(1)或低电平(0)状态,或者在某些系统中可以读取模拟信号。

输出模式:当GPIO引脚配置为输出模式时,它可以向外部设备发送数字信号。输出引脚可以设置为高电平(1)或低电平(0),以控制连接的设备的状态。

状态和电平:GPIO引脚的状态表示当前引脚的输入或输出电平。高电平通常表示逻辑1,低电平表示逻辑0。

二.GPIO的模式

1.浮空输入

浮空输入(Floating Input)是一种引脚配置模式,用于接收外部信号。在这种模式下,输入引脚不与任何确定的电压源连接。此时,该引脚既不输出电流,也不接收电流,因此它的电压可以自由浮动。浮空输入模式通常在需要暂时不使用某个引脚,或者为了节省功耗时使用。

通俗解释: 假如你有一个电路板上的按钮(开关)连接到微控制器的引脚。在没有人按下按钮时,你可能不想让这个引脚消耗任何电流,所以你可以将这个引脚配置为浮空输入模式。这样,这个引脚不会影响电路的其他部分,也不会消耗不必要的电流。

配置引脚模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;      

2.上拉输入

上拉输入(Pull-up Input) 是一种输入模式,其中输入引脚通过一个内部或外部的电阻连接到正电源(通常是 Vcc)。上拉输入通常用于需要保证输入引脚有明确电平(高电平)时使用。

通俗解释: 假设你有一个按钮连接到微控制器的引脚。按钮的一端连接到引脚,另一端连接到地(GND)。当按钮没有按下时,引脚会处于悬空状态,可能会引起干扰,导致引脚状态不确定。为了避免这种情况,可以使用上拉电阻将引脚拉到高电平(Vcc),确保按钮未按下时,引脚总是处于高电平。当按钮按下时,引脚就会通过按钮直接接地,变为低电平。

配置引脚模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

3.下拉输入

下拉输入(Pull-down Input) 是一种输入模式,在下拉输入模式下,输入引脚通过一个内部或外部的电阻连接到地(GND)。当输入引脚没有外部信号连接时,它会被“拉”到地电平(低电平)。下拉输入模式确保输入引脚在没有信号时保持在低电平状态,避免因引脚悬空而导致不稳定或不确定的输入状态。

通俗解释: 假设你有一个按钮连接到微控制器的引脚。按钮的一端连接到引脚,另一端连接到正电源(Vcc)。如果按钮没有按下,引脚会处于悬空状态,可能会导致误判。为了避免这种情况,你可以使用下拉电阻将引脚拉到低电平(GND),确保按钮未按下时,引脚总是处于低电平。当按钮按下时,引脚通过按钮与正电源连接,变为高电平。

配置引脚模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 

4..模拟输入

模拟输入(Analog Input) 是指微控制器通过专用的模拟输入引脚读取来自外部设备的连续模拟信号,而不是数字信号。模拟输入通常用于测量物理世界中的模拟信号,如温度、光线强度、电压等。

通俗解释: 假设你有一个温度传感器,它输出的是一个与温度成比例的模拟电压信号。微控制器无法直接读取模拟电压,但它可以使用一个称为模数转换器(ADC)的功能将这个电压信号转换成数字信号,然后在程序中进行处理和判断。模拟输入的作用就是让微控制器能够接受并处理这些变化的电压值。

5.开漏输出

开漏输出(Open-drain Output)是一种特殊的输出模式,允许外部电路控制引脚的电平。在这种模式下,微控制器的输出引脚可以驱动到低电平(0V),但是不能直接驱动到高电平(Vcc)。当输出引脚不被驱动时,它会处于“高阻态”,由外部电路(如上拉电阻)将引脚拉到高电平。

通俗解释: 假设你有多个设备共用一个信号线,它们可以通过拉低信号线来发出信号。当某个设备不需要发出信号时,它将“释放”信号线,让其他设备使用。开漏输出类似于一个开关,只有在需要时才将信号线拉低,其他时候信号线可以通过外部电阻被拉高。这样做的好处是可以让多个设备共享同一条信号线,而不会发生冲突。

配置引脚模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

6.推挽输出

推挽输出(Push-pull Output) 是一种常见的输出模式,适用于需要将信号稳定地输出为高电平(Vcc)或低电平(GND)的场景。与开漏输出不同,推挽输出能够同时驱动高电平和低电平。当微控制器的输出引脚工作在推挽模式时,它能够驱动输出为高电平或低电平,而不是像开漏输出那样只能驱动低电平并依赖外部电阻拉高信号。

通俗解释:推挽输出能够输出稳定的电平,而不依赖外部电阻。你可以把它想象成一个双向的开关,既可以拉低电平,也可以拉高电平,这使得推挽输出非常适合用于驱动需要稳定电平的设备,比如LED、继电器或者其他数字电路。

配置引脚模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

7.复用输出

复用输出(Alternate Function Output)复用输出模式允许GPIO引脚在正常的数字输入/输出功能之外,执行其他特定外设功能的输出,比如定时器PWM输出、串口的TX引脚、SPI或I2C的信号线等。

通俗解释:你可以把复用输出模式想象成一个“多功能口袋”。默认情况下,GPIO引脚的作用是输入或输出数字信号。但如果你想让某个引脚不仅仅用于简单的开关控制(例如LED),而是用来输出定时信号(如PWM波)、串行数据(如UART)等复杂的功能时,就需要将这个引脚设置为复用模式。通过复用模式,你实际上将一个普通的引脚“转换”成某个外设的输出信号口。

配置引脚模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 

作者:most diligent

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 GPIO的八大模式详解

发表回复