一、GPIO
GPIO(General-Purpose Input/Output)是通用输入输出端口的简称,它允许用户通过软件来控制其输入和输出功能。GPIO引脚可以连接外部设备,实现与外部的通信、控制和数据采集。在嵌入式系统中,GPIO接口通常用于控制简单的外部设备,如LED灯、按钮等,它们只需要开/关两种状态。
二、GPIO I/O段位口的基本结构
如上图所示,是GPIO位结构的基本电路图。整体分为两个部分,红线上方为输入部分,下方为输出部分。
三、GPIO的八种工作模式
GPI端口的每个位可以由软件分别配置成八种模式。
1、浮空输入
上图红线为浮空模式时数据输入走向,上拉电阻和下拉电阻是断开的,电平不确定,完全由外部输入决定,一般接按键的时候可以使用这个模式。
2、上拉电阻/下拉电阻
开关2断开时为上拉电阻;开关1断开时为下拉电阻。当输入引脚什么都不接时,引脚输入处于一种浮空的状态,引脚的输入电平极易受外界的干扰而改变,上拉/下拉电阻能防止此问题的发生。
3、模拟输入
模拟输入时,没有上拉/下拉电阻,也不经过施密特触发器,此时读取的是外部的模拟信号。
4、开漏输出
开漏模式下,P-MOS管是不用的。当输出数据寄存器为1时,下管断开,此时输出相当于断开,也就是高阻模式;当输出数据寄存器为0时,下管导通,输出接到VSS,也就是输出低电平,这种模式下,只有低电平有驱动能力,高电平没有驱动能力;此模式可以作为通信协议的驱动方式。
5、推挽输入
推挽模式下,P-MOS和N-MOS管均有效,当输出数据寄存器为1时,P-MOS管导通,N-MOS管断开,输出高电平;当输出数据寄存器为0时,N-MOS管导通,P-MOS管断开,输出低电平;这种模式下,STM32对IO口有绝对的控制权,也就是说,输出什么电平完全由STM32说了算。
6、复用开漏/推挽输出
复用开漏/推挽输出和开漏/推挽输出是类似的,不同的就是,引脚的控制权转移到了片上外设。