下面我们来先学习如何实现用hal库配置一个引脚输出。 首先选择一个引脚,这里我们选择PA7,然后选择输出模式
接着到这个页面选择GPIO细化我们的配置:
随后弹出这个页面就可以选择我们想要的配置,这里将PA7配置为输出高电平,推挽输出,无上下拉,输出模式一般默认选择无上下拉,这样能实现输出电平由代码直接控制。
这样我们就配置好一个引脚,然后生成文件就可以了。
下面是控制引脚电平的代码:
/* GPIOx:要设置的GPIO的分组
* GPIO_Pin:要设置的GPIO的编号
* PinState:GPIO状态(GPIO_PIN_SET/GPIO_PIN_RESET)
*/
HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState);
GPIO(通用输出输入引脚): 它的作用就是在STM32的控制之下,读取外部电路的电压值,或者向外输出一定的电压值。 IO口有两种功能,复用和重映射 **复用:**就是同一个引脚具备有多种功能,例如:
PA9既能够用作定时器1通道2来使用,也能当作USART1的发送通道使用,下面图片就是将PA9当作发送通道使用
重映射:当两个外设引脚冲突时,就可以将其中一个外设的接到备用引脚上
GPIO有八种工作模式,先来简单介绍四种输入模式:上拉输入,下拉输入,浮空输入,模拟输入。 首先是浮空输入:
浮空输入模式下,要外接一个上拉电阻,因为GPIO口内部处于高阻态(相当于芯片内部有一个巨大的电阻),而高阻态意味着它分到的电压更多,所以10K电阻的压降几乎为0V,因此PB12处就几乎是3.3V,看图可知,当KEY1按下时,那么PB12就会从3.3v变成0v,这样我们就可以读取PB12这个引脚电平来判断按键是否按下了,下拉电路同理。
上图是靠外部上拉电阻实现的,我们也可以靠内部的上拉电阻实现,所以接下来介绍,上拉输入和下拉输入:
在上图可以看出,外部并没有接上拉电阻,也可以实现这样的操作,不过要注意的是配置就要选择上拉输入了,配置如下图。
下面是选择上拉输入的代码:
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==GPIO_PIN_RESET)
{
//软件消抖
HAL_Delay(20);
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==GPIO_PIN_RESET)
{
//翻转电平
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_7);
}
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12) == GPIO_PIN_RESET);
}
接下来我们来介绍其它四种输出模式: 首先我们先通过这个图来理解这八种工作模式:
首先是推挽输出模式:
在推挽输出下:P-MOS管和N-MOS管协同作用,当N-MOS断开,P-MOS激活时,对外输出3.3v高电平,LED灯点亮,当P-MOS断开,N-MOS激活时,对外输出0v低电平,LED灯熄灭,这样就实现了对外输出高低电平。 
但总有一些更高或者更低的电压驱动,而推挽输出最大只能输出3.3v高电平,如果遇到5v才能驱动的LED灯时,我们就可以使用开漏输出了,在开漏输出下,只有N-MOS工作,P-MOS一直处于断开,所以当N-MOS断开时,输出IO口就会处于高阻态,并不对外输出特定的电平信号,而当N-MOS连接时,对外则输出0v低电平,所以这时可以给LED灯外接一个5v电压,从而实现点灯。
可以看出在推挽输出下,小灯是由来之芯片的电压来驱动,而开漏输出下,则没有内部驱动能力,都是依靠外部电压源来驱动。
需要注意的是:这里我们需要用支持5V容忍的IO口,否则会使上方保护二极管长期导通,将5V引入电源中造成损坏。
输出驱动器: 对于输出控制模块,它有两个控制指令的来源,一个是我们使用HAL库的函数控制的输出寄存器 ,而另一个则是我们后面将会学习的片上外设,例如串口模块、I2C模块等,因而根据控制来源的不同,STM32将两种输出模式又细分成了普通的推挽输出和开漏输出,以及复用推挽输出与复用开漏输出。 
输出驱动器:
后面的肖特基触发器用于稳定电平,处理后的电平信号被写入输入数据寄存器,等待我们使用HAL库的函数对寄存器进行读取,这就是最基本的GPIO口读取高低电平的原理。注意到这条线路中有两个分支,第一条分支通向了模拟输入,浮空、上拉、下拉这三种输入模式都是仅读取了高低电平,也就是数字信号,而模拟输入则是读取输入电压的具体数值,因此在触发器前产生分支,将电压引入了模拟输入相关的片上外设,将会在以后的ADC相关知识了解到;
另一条支线则是在触发器后,接入了例如串口模块等需要数字输入的片上外设,这里要注意的是:输入部分的不同分支可以同时读取触发器的输出,因此不会出现复用上拉输入等模式,而是在片上外设上也使用普通的输入模式即可。

![[开源]基于STM32单片机WiFi智能停车场系统 Onene车位管理设计 云平台停车场车位检测 APP智慧停车场HK-010-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260921150408-6ab1476821e49-220x150.jpg)

