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工作模式

    复用功能是指STM32的其它片上外设对GPIO引脚进行控制,此时GPIO引脚用作

该外设功能的一部分,算是第二用途。例如我们使用USART串口通讯时,需要用到

某个GPIO引脚作为通讯发送引脚,这个时候就可以把该GPIO引脚配置成USART串口

复用功能,由串口外设控制该引脚,发送数据。复用功能输入与复用功能输出类似,

在复用功能输入模式时,GPIO引脚的信号传输到STM32其它片上外设,由该外设

读取引脚状态。