GPIO:通用型输入输出,可以控制输入输出的STM32引脚

浮空输入 Input floating
拉上输入 Input pull-up
下拉输入 Input-pull-down
模拟输入 Anglog
开漏输出 Output open-drain
推挽输出 Output push-pull
推挽复用 Alternate function push-pull
开漏复用 Alternate function open-drain

输出模式:控制端口输出高电平低电平,用于驱动LED,蜂鸣器等,若十大功率器件,则要加上驱动器(小电流控制大电流)

输入模式:读取端口的高低电平,用于读取外接按键,外接模拟信号的输入,ADC电压采集,模拟通信协议接受数据等

image-20240927202349798

  • 端口位设置/清除寄存器(GPIOx_BSRR)(x=A…E):低位用于设置ODRy位为1,高位用于设置ODRy位为0
  • 端口输出数据寄存器(GPIOx_ODR)(x=A..E):可以分别地对各个ODR位进行独立的设置/清除

一、推挽输出

  • 当输出控制为1时

    P-MOS导通,N-MOS不导通,输出高电平

  • 当输出控制为0时

P-MOS永远不导通,N-MOS导通,输出低电平

  • 引脚电流流向单片机內部或着从单片机内部流向外部
  • 可以同时从输入寄存器读取引脚状态
  • 使用场所
  1. 驱动能力需求高的场合
  2. 高速信号传输
  3. 无需共用信号线的场合

二、开漏输出

  • 输出控制为0

    P-MOS永远关闭,N-MOS导通, 输出低电平

  • 输出控制为1

P-MOS永远不导通,N-MOS也不导通,输出高阻态

此时要想引脚输出高电平或低电平,需要在单片机外部,接上拉或下拉电阻

​ 电阻很大–弱上拉 电阻很小–强上拉

  • 可以同时从输入寄存器读取引脚状态
  • 使用场所
  1. 多个设备共用信号线

  2. 不同电压系统之间的接口

  3. 需要外部上拉电阻来确定逻辑高电平的场合

  4. 工作时,两个MOS管交替工作来驱动负载。

    输出1时,上部晶体管导通将电流推向负载

输出0时,下部集体管导通将电流拉回地线

三、复用功能

引脚不作为IO口来使用,用作其它功能

四、上拉和下拉输入

读取引脚的电平

  • 当IO输入电压大于VDD,二极管导通,此时VIO == VDD,保护芯片

  • 当IO输入电压小于VDD,二极管导通,此时VIO == VSS,保护芯片

  • 该模式下输出功能无效

  • 施密特触发器作用

image-20240928000612157

五、模拟输入

  • 施密特触发器禁用,输入数据寄存器值为0

  • ADC