STM32 通用输入输出 GPIO工作模式
GPIO工作模式
GPIO的结构决定了GPIO可以配置成8种模式:
typdedf enum
{
GPIO_Mode_AIN = 0x0, // 模拟输入 //ADC
GPIO_Mode_IN_FLOATING = 0x4, // 浮空输入 //按键检测
GPIO_Mode_IPD = 0x28, //下拉输入
GPIO_Mode_IPU = 0x48, //上拉输入
GPIO_Mode_Out_OD = 0x14, //开漏输出 需外接上拉电阻使用,线与功能,
GPIO_Mode_Out_PP = 0x10, //推挽输出 //LED
GPIO_Mode_AF_OD = 0x1C, //复用开漏输出 // I2C
GPIO_Mode_AF_PP = 0x18 //复用推挽输出 //定时器驱动PWM波点亮LED灯
} GPIOMode_TypeDef;
推挽输出模式一般应用在输出电平位0和3.3V而且需要高速切换开关状态的场合。在STM32的应用中,
除了必须用开漏模式的场合,我们都习惯用推挽输出模式(如点亮一个LED灯)。
开漏输出一般用在I2C(复用开漏输出)、SMBUS(复用开漏输出)通讯等需要“线与”功能的总线电路中。
除此之外,还用在电平不匹配的场合,如需要输出5V的高电平,就可以在外部接一个上拉电阻,上拉电源为5V,
并把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V的电平。
高阻态:引脚既不输出高电平,也不输出低电平,为高阻态。
GPIO的开漏输出正常使用时,必须外部接上 上拉电阻,参考下图。它具有“线与”特性,
也就是说,若有很多个开漏模式引脚连接到一起,只有当所有引脚都输出高阻态,才由上拉电阻
提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,
那么线路就相当于短路接地,使得整条线路都为低电平,0伏。
复用功能是指STM32的其它片上外设对GPIO引脚进行控制,此时GPIO引脚用作
该外设功能的一部分,算是第二用途。例如我们使用USART串口通讯时,需要用到
某个GPIO引脚作为通讯发送引脚,这个时候就可以把该GPIO引脚配置成USART串口
复用功能,由串口外设控制该引脚,发送数据。复用功能输入与复用功能输出类似,
在复用功能输入模式时,GPIO引脚的信号传输到STM32其它片上外设,由该外设
读取引脚状态。