小白必看|STM32单片机GPIO的8种工作模式

来源: 电子产品世界 2022-01-28 11:48:10

  STM32单片机的GPIO有8组,分别为A、B、C、D、E,每组有0-15共16个。可以配置为8种模式: 

  1 

  浮空输入

  GPIO_Mode_IN_FLOATING

  
外部通过IO口输入电平,传输到施密特触发器(此时施密特触发器为打开状态),直接进入输入数据寄存器,CPU通过读输入数据寄存器实现读取外部输入电平值,在输入浮空模式下可以读取外部输入电平。 
如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。

  2 

  上拉输入

  GPIO_Mode_IPU

  
上拉电阻的开关闭合,上拉电阻连接到VDD,在I/O端口悬空(在无信号输入)的情况下,外部输入通过上拉电阻,施密特触发器存入输入数据寄存器,被CPU读取出高电平;当I/O端口输入为低电平的时候,施密特触发器触发存入输入数据寄存器,CPU读取出低电平。

  3 

  下拉输入

  GPIO_Mode_IPD

  下拉电阻的开关闭合,在I/O端口悬空(在无信号输入)的情况下,下拉电阻连接到VSS,外部输入通过下拉电阻,施密特触发器存入输入数据寄存器,被CPU读取出低电平;当I/O端口输入为高电平的时候,下拉电阻处的电压为高电平,施密特触发器触发存入数据寄存器,CPU读取出高电平。

  4 

  模拟输入

  GPIO_Mode_AIN

  模拟输入通道的配置则更加简单,信号从左边编号1的端口进入,从右边编号2的一端直接模拟输入至片上外设模块。上拉、下拉电阻和施密特触发器,均处于断开状态,IO口外部电压为模拟量,电压形式为非电平形式。

  5 

  开漏输出

  GPIO_Mode_Out_OD

  开漏输出模式下,通过设置 位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。 
这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于截止状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于导通状态,此时I/O端口的电平就是低电平。 
同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平。

  6 

  推挽输出

  GPIO_Mode_Out_PP

  推挽电路(push-pull)就是两个不同极性晶体管间连接的输出电路。推挽电路采用两个参数相同的MOSFET管,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小效率高。 
当设置输出的值为为高电平时,P-MOS导通,N-MOS截止,此时I/O端口的电平就由P-MOS管决定为高电平;当设置输出的值为低电平的时候,P-MOS管处于截止状态,N-MOS管处于导通状态,此时I/O端口的电平就由N-MOS管决定为低电平,同时IO口输出的电平可以通过输入电路读取,此时I/O端口的电平一定是输出的电平。

 7 

  复用开漏输出

  GPIO_Mode_AF_OD

  与开漏输出模式唯一区别在于输出控制电平之前电平的来源,开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的,开漏复用输出模式的输出电平是由复用功能外设输出决定的。其他与开漏输出相似。 
控制电路输出高电平:N-MOS截止,IO口电平由外部上拉/下拉决定。 
控制电路输出低电平:N-MOS开启,IO口输出低电平。 

  8 

  复用推挽输出

  GPIO_Mode_AF_PP

  与推挽输出模式唯一区别在于输出控制电路之前电平的来源。 
开漏输出模式的输出电平是CPU写入输出数据寄存器的,推挽复用输出模式的输出电平是由复用功能外设输出决定的。 
*转自玩转嵌入式 

0
收藏
0