GPIO介绍
GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式。输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
引脚电平:0V~3.3V,部分引脚可容忍5V
STM32 的 IO 口可以由软件配置成如下 8 种模式:
1、 输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏复用功能
GPIO基本结构:
GPIO位结构:
1.为了避免引脚悬空导致的输入数据不确定,我们就需要加入上拉或者下拉电阻。如果加入上拉电阻,当引脚悬空时,有上拉电阻来保证引脚的高电平,所以上拉输入默认为高电平的输入方式,反之亦然。
2.施密特触发器可以对输入电压进行整形,如果输入电压大于某一阈值,输出电压就会瞬间变为高电平。右侧引脚是由外部输入的,即使是数字信号也可能会失真,信号如果在下限附近来回横跳,但只要没有跳到上限去,电平就不会发生变化,输出仍然稳定。
GPIO模式:
模式名称 | 性质 | 特征 |
浮空输入 | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定 |
上拉输入 | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 |
下拉输入 | 数字输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
模拟输入 | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
开漏输出 | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
推挽输出 | 数字输出 | 可输出引脚电平,高电平接VDD,低电平接VSS |
复用开漏输出 | 数字输出 | 由片上外设控制,高电平为高阻态,低电平接VSS |
复用推挽输出 | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS |
浮空/上拉/下拉输入:
使用浮空输入时,端口一定要接上一个连续的驱动源,不能出现悬空的状态。一个端口只能有一个输出但可以有多个输入。
模拟输入:
使用ADC时,将引脚直接配置为模拟输入即可。
开漏/推挽输出:
开漏输出的高电平呈现为高组态,没有驱动能力。 P-MOS如果无效,就是开漏输出。
复用开漏/推挽输出:
输出的控制由片上外设决定。