stm32 IO口
每个GPIO引脚都可以由软件配置成输出(推挽或开漏)。输入(带或不带上拉或下拉)或复用的外设功能端。多数GPIO引脚都与数字或模拟的复用外设公用。除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。
typedef enum
{
GPIO_Mode_AIN = 0x0 // 模拟输入
GPIO_Mode_IN_FLOATING=0x04 // 浮空输入
GPIO_Mode_IPD = 0x28 // 下拉输入
GPIO_Mode_IPU = 0x48 // 上拉输入
GPIO_Mode_OUT_OD = 0x14 // 开漏输出
GPIO_Mode_OUT_PP = 0x10 // 推挽输出
GPIO_Mode_AF_OD = 0x1c // 复用开漏输出
GPIO_Mode_AF_PP = 0x18 // 复用推挽输出
}
在固件库中,GPIO共有8种细分的工作模式,归为三类;
输入模式;
== 模拟,浮空,上拉,下拉 ==
肖特基触发器(TTL)打开,输出被禁止,可通过输入数据寄存器 GPIOx_IDR读取IO状态。
输入模式可设置为上拉,下拉,浮空,模拟四种。
上拉和下拉–默认的电平尤上拉或者下拉决定。
浮空–电平是不确定的,完全由外部的输入决定(一般接按键时候用的是这个)。
模拟–用于ADC采集。
输出模式;
推挽,开漏
推挽模式时–双MOS(P-MOS管 和 N-MOS管)轮流工作,输出数据寄存器 GPIOx_ODR可控制IO输出高低电平。
开漏模式时–只有N-MOS管工作,输出数据寄存器可控制IO输出高阻态或低电平。
高阻态–数字电路中常见的术语,电路的一种输出状态,既不是高电平,也不是低电平,如果高阻态输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测,可能是高电平,也可能是低电平,随他后面借的东西定。–来自百度百科
复用功能;
输出使能,输出速度可配置,可工作在开漏记推挽模式,但是输出信号源于其他外设,输出数据寄存器GPIOx_OD无效;
输入可用,通过输入数据寄存器可获取IO实际状态,但一般直接用外设的寄存器来获取该数据信号。