1. GPIO概述
GPIO(General-purpose input/output):通用型输入输出。
简单理解就是我们可以控制输入输出的STM32引脚,统称为GPIO。GPIO存在的意义就是用程序控制或读取他们的输出或输入。
1.1. GPIO总体说明
STM32有多组GPIO,比如我们使用的芯片:STM32F103ZET6共有 7 组GPIO端口,他们分别是GPIOx(x从A-G),每组控制16个引脚,共有 112个 GPIO引脚。
1.2. GPIO的8种工作模式
1.2.1. 输入模式(四种)
(1)浮空输入(Input floating)
(2)上拉输入(Input pull-up)
(3)下拉输入(Input-pull-down)
(4)模拟输入(Analog)
输入模式下可以读取端口的高低电平,用于读取外接按键,外接模拟信号的输入,ADC电压采集,模拟通信协议接受数据等。
1.2.2. 输出模式(四种)
(1)通用开漏输出(Output open-drain)
(2)通用推挽式输出(Output push-pull)
(3)推挽式复用功能(Alternate function push-pull)
(4)开漏复用功能(Alternate function open-drain)
输出模式下可以控制端口输出高电平低电平,用于驱动LED,蜂鸣器等,如果是大功率器件(比如电机),还需要加上驱动器(小电流控制大电流)。
1.3. GPIO 输出流程
1.3.1. 推挽输出
(1)输出模式下,输出控制器被激活;
(2)当GPIO为推挽输出模式:
输出数据寄存器上输出1 将激活P-MOS,输出高电平。
输出数据寄存器上输出0 将激活N-MOS,输出低电平。