一、什么是GPIO
GPIO是是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。 STM32 芯片的 GPIO被分成很多组,如GPIOA~GPIOF,每组有 16 个引脚。作为输出引脚可输出高低电平,从而作为开关控制,也可以作为模拟通讯时序状态。作为输入引脚可以通过读取输入的引脚高低电平从而确认按键的状态。引脚一般能容忍0~3.3V,带有FT标志的引脚可以容忍5V。
二、GPIO的结构框图
图的上半部分是输入,下半部分是输出,输入部分中IO连接了2个保护二极管。用于对输入电压进行限幅。对输入起一个保护作用。输入部分种连接了一个弱上拉电阻VDD和一个弱下拉电阻VCC,连接这2个电阻的作用就是避免引脚浮空导致的输入数据不确定。可以通过程序来进行配置,当上拉电阻导通,下拉电阻断开,就是上拉输入模式,当下拉电阻倒通,上拉电阻断开,就是下拉输入模式。当2个电阻都断开,就是浮空输入模式。然后这里的施密特触发器的作用就是对输入电压进行整形。整形后就可以存放在输入数据寄存器中。模拟输入主要由片上外设ADC控制。
输出部分主要由输出数据寄存器和片上外设控制。输出控制寄存器一次性可以控制16位IO的状态,想要单独控制某一位IO的引脚状态,可以通过位设置清除寄存器来实现。输出控制中还来连接了2个MOS管,其中PMOS接在VDD上,NMOS接在VSS上,当处于推挽输出模式时,NMOS管和PMOS管均有效。STM32对IO的高低电平有绝对的控制权。开漏输出模式下只有NMOS管有效,也就是低电平有效,PMOS管断开,处于高阻态状态。
三、GPIO的八种工作模式
推挽输出 | 可控制IO输出高电平或低电平 |
开漏输出 | 可控制IO输出高组态或低电平 |
复用推挽输出 | 输出由其他片上外设控制,输出数据寄存器无效,输入可用 | </