GPIO 八种状态 ,一般是指 STM32F1系列(如STM32F103)GPIO配置寄存器中的8种工作模式。
一、GPIO模式及其分类
1、输出
**(1)浮空输入。**可读取引脚电平,若引脚悬空,则电平不确定。
**(2)上拉输入。**可读取引脚电平,内部连接上拉电阻,悬空时默认高电平。
**(3)下拉输入。**可读取引脚电平,内部连接下拉电阻,悬空时默认低电平。
**(4)模拟输入。**GPIO无效,引脚直接接入内部ADC。
2、输入
**(1)开漏输出。**可输出引脚电平,高电平为高阻态,低电平接VSS。
**(2)推挽输出。**可输出引脚电平,高电平接VDD,低电平接VSS。
**(3)复用开漏输出。**由片上外设控制,高电平为高阻态,低电平接VSS。
**(4)复用推挽输出。**由片上外设控制,高电平接VDD,低电平接VSS。
二、GPIO结构以及模式详解
先看GPIO内部框图:

1、输入模式
(1)浮空输入(Floating Input)
既不上拉,也不下拉。高阻态,完全由外部决定电平。主要应用:UART RX,外部数字信号输入。缺点:悬空时,电平不确定,随机跳变。
内部结构

(2)上拉输入(Pull-Up)
引脚默认高电平,外部接地变低电平。主要应用:按键输入,I2C。
内部结构

(3)下拉输入(Pull-Down)
引脚默认低电平,外部拉高变高电平。主要应用:状态检测。
内部结构

(4)模拟输入(Analog)
内部关闭施密特触发器和数字输入缓冲器,直接进入ADC。主要应用:ADC采样、电压检测、电流采样。
内部结构

2、输出模式
(5)推挽输出(Push-Pull)
既能输出高,也能输出低。主要应用:LED、继电器、普通数字输出。
内部结构

(6)开漏输出(Open Drain)
输出0导通,输出1,引脚悬空。主要应用:I2C、多机通讯。
内部结构

(7)复用推挽输出(AF Push-Pull)
GPIO控制权交给外设。如:TIM/SPI/USART。通过TIM输出PWM信号是最经典的应用.
(8)复用开漏输出(AF Open Drain)
GPIO控制权交给外设。主要是:I2C的SDA和SCL。
三、8种模式总结表

四、电机控制中的实际应用
