下图为stm32f103系列GPIO的基本结构,左侧连接MCU内部,中间上半部分为输入,中间下半部分为输出,右侧为MCU引出的外设I/O引脚
八种模式分别为:
输出模式四种:推挽输出,开漏输出,复用推挽输出,复用开漏输出
输入模式四种:上拉输入,下拉输入,浮空输入,模拟输入
具体介绍:
输出模式:
推挽输出:输出高电平时就是直接接到了我们单片机的VDD(3.3V),输出低电平时就是直接接到了我们单片机的VSS(0V),最直接的输出方式,让“输出控制”变为了VDD/VSS输出,使得输出电流增大,提高了输出引脚的驱动能力,提高了电路的负载能力和开关的动作速度。是最常用的模式
开漏输出:开漏输出与推挽输出不同,它只连接了VSS(0V),如果模式为开漏输出正常情况他只能输出低电平无法输出高电平。如果要输出高电平则需要在外部电路连接上拉电阻,这样的好处是我们能输出3.3V外的电压,通常能输出5V,从而实现电平转换
复用推挽/开漏输出:这两个一起介绍,GPIO引脚除了作为通用输入/输出引脚使用外,还可以作为片上外设(USART,I2C,SPI等)专用引脚,即一个引脚可以有多个用途,但同一时刻一个引脚只能使用复用功能中的一个。当引脚设置为复用功能时可选择这两个模式,在设置为复用开漏输出模式时需要外接上拉电阻
输入模式:
上拉输入:设置为此选项外部没有信号传入时,默认为高电平,该模式的典型应用就是外部按键,当没有按键按下时引脚为确定的高电平,当按键按下时引脚电平被拉为低电平
下拉输入:设置为此选项外部没有信号传入时,默认为低电平
浮空输入:此时引脚浮空,读取的电平是不确定的,外部信号是什么引脚就输入什么电平,芯片复位上电后,默认为浮空输入模式
模拟输入:引脚信号直接连接模拟输入,实现对外部信号的采集,可以收集0~Vss的电压值