GPIO的工作模式
根据GPIO的电路结构,引脚可以分为四种工作模式:
1.输入模式
根据是否开启上拉/下拉电阻,又可以分成3种输入模式:
(1)浮空输入
不使能上拉/下拉电阻。此时,I/0引脚的电平状态不确定,完全由外部输人决定。 MCU上电复位后,引脚默认的工作模式就是浮空输入。
(2)上拉输入
使能上拉电阻,1/0引脚内部接上拉电阻。如果引脚外部没有信号输入时,默认为高电平。
(3)下拉输入
使能下拉电阻,I/O引脚内部接下拉电阻。如果引脚外部没有信号输人时,默认为低电平。
输入模式下的上拉/下拉电阻在设计电路时比较有用。以按键电路为例,如果按键电路自身设计了上拉或下拉电阻,则引脚可以选择工作在浮空输人模式下。如果按键电路自身没有设计上拉或下拉电阻,则可以根据按键电路的设计,使能引脚的上拉/下拉电阻。这样可以减少按键电路的上拉或下拉电阻,起到简化电路的作用。
2.输出模式
当我们需要使用引脚作为数字输出时,常常使用输出模式。此时,输出驱动器启用,并配置为推挽类型或开漏类型,施密特触发器打开,可以读取引脚的电平状态。
根据MOS管的工作状态,又可以分成两种输出模式:
(1)推挽输出
**P-MOS管和N-MOS管轮流工作,可以输出高电平或低电平。**当输出数据寄存器的某一位为1时,经过非门后,P-MOS管处于导通状态,N-MOS管处于截止状态,对应的 I/O引脚将输出高电平;当输出数据寄存器的某一位为0时,经过非门后,P-MOS管处于截止状态,N-MOS管处于导通状态,对应的I/O引脚输出低电平。
(2)开漏输出
P-MOS管一直处于截止状态,只有N-MOS管工作,只能输出低电平。如果输出数据寄存器某一位为0时,N-MOS管处于导通状态,对应的I/O引脚将输出低电平。如果输出数据寄存器某一位为1时,N-MOS管处于截止状态。此时,对应I/O引脚的输出电平就不再由输出数据寄存器决定,而是由1/0引脚外部的上拉或下拉电阻决定。如果没有外部的上拉或下拉电阻,引脚将处于悬空状态。
在输出模式中,推挽输出是最常用的模式,用于指示灯、蜂鸣器、继电器及电机等外围电路的控制。
开漏输出则一般用于IIC总线(开漏模式加上拉电阻以实现双向数据通信)或者作为电平转换(3.3V电压与5V电压之间的转换)。
3.模拟模式
**模拟模式主要用于片内模拟外设(A/D、D/A、模拟比较器等)的信号通道。**当引脚工作于模拟模式时,施密特触发器被旁路,输出驱动器关闭,上拉/下拉电阻禁能,输人数据寄存器的值恒为0。此时,10引脚的功耗较小。因此在工程应用中,常常将没有用到的 I/O引脚设置为模拟模式,以减少系统功耗,提高抗干扰能力。
4.复用模式
GPIO引脚的基本功能是数字I/O,而STM32微控制器片内集成了大量的外设,如TIMER和UART等,这些片内外设的外部引脚与GPIO引脚复用。**在复用模式下,引脚的电平状态不再受端口寄存器组的控制,而是由片内外设控制。**此时,输出驱动器启用,可以配置为推挽类型或开漏类型;施密特触发器打开,可以读取引脚的电平状态。片内外设通过多路复用器与GPIO引脚互连,用户可以通过修改多路复用器,重新分配片内外设所映射的1/0引脚。引脚所对应的片内外设复用功能,可以通过查阅芯片的数据手册获取,或者在CubeMX软件的引脚分配图中点击对应引脚,在弹出的菜单中将列出该引脚的全部复用功能。