STM32 - GPIO引脚

GPIO(General-purpose input/output),通用型输入输出。简单理解就是我们可以控制输入输出的STM32引脚,统称为GPIO

GPIO存在的意义就是用程序控制或读取它们的输出或输入

GPIO的特点:

  1. 不同型号,IO口的数量可能不一样。

  2. 快速翻转。最快可以达到每 2 个时钟周期翻转一次。(STM32F1系列最快可以达到50MHz的翻转速度)。指的是在输出模式下高低电平的切换

  3. 每个IO都可以作为外部中断。

  4. 支持8种工作模式。

GPIO的工作模式:

  1. GPIO端口的每个位(引脚)可以由软件分别配置成8种模式,当然对同一个引脚同一时间只能处于某一种模式中。

  2. 输入浮空(Input floating):可以检测外部信号的‘1’和‘0’

  3. 输入上拉(Input pull-up):空闲状态输入一个‘1’

  4. 输入下拉(Input-pull-down):空闲状态输入一个‘0’

  5. 模拟输入(Analog):输入模拟信号,和 ADC(模数转换器) 配合使用

  6. 通用开漏输出(Output open-drain):

    1. 输出数据寄存器输出逻辑‘0’ (不能主动输出高电平,需依赖外部上拉)
  7. 通用推挽式输出(Output push-pull):

    1. 输出数据寄存器输出逻辑 ‘1’和‘0’(可主动驱动高/低电平)
  8. 推挽式复用功能(Alternate function push-pull):

    1. 片上外设输出逻辑‘1’和‘0’
    2. 外设可直接控制高低电平,无需外部电路(上下拉),适合高速信号(如SPI时钟线、UART_TX)
  9. 开漏复用功能(Alternate function open-drain):

    1. 片上外设输出逻辑 ‘0’
    2. 输出‘1’,需外接上拉电阻,适合总线通信(如I2C)、电平转换或“线与”逻辑。
  • 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问。
  • 输出模式下可以控制端口输出高电平低电平,用于驱动LED,蜂鸣器等,如果是大功率器件(比如电机),还需要加上驱动器(小电流控制大电流)。
  • 输入模式下可以读取端口的高低电平,用于读取外接按键,外接模拟信号的输入,ADC电压采集,模拟通信协议接受数据等。

与GPIO相关的7个寄存器:(重要)

  1. 每个GPIO端口有7个相关的寄存器:
  2. 2个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)。(重要
  3. 2个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)。(重要
  4. 1个32位置位/清除寄存器(GPIOx_BSRR)。
  5. 1个16位清除寄存器(GPIOx_BRR)。
  6. 1个32位锁定寄存器(GPIOx_LCKR)。

参考链接: