【stm32】F407ZGT6 - GPIO工作原理

226 阅读3分钟

1. IO口和IO和寄存器的关系

一共7组(A、B、C......)IO口,每组IO口有16个IO(16个引脚),每个引脚都是由10个寄存器控制,寄存器有32位和16位的,可以分为(每2|1位)控制一个IO。列子: image.png

2. 寄存器分类和作用:

GPIO 端口模式寄存器 (GPIOx_MODER)

image.png

作用: 这些位通过软件写入,用于配置 I/O 方向模式

  • 00:输入(复位状态)
  • 01:通用输出模式
  • 10:复用功能模式
  • 11:模拟模式

GPIO 端口输出类型寄存器(GPIOx_OTYPER)

image.png

作用: 位 31:16 保留,必须保持复位值。 位 15:0 OTy[1:0]:端口 x 配置位 (Port x configuration bits) (y = 0..15)。 这些位通过软件写入,用于配置 I/O 端口的输出类型

  • 0:输出推挽(复位状态)
  • 1:输出开漏

GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR)

image.png

作用:这些位通过软件写入,用于配置 I/O 输出速度

  • 00:2 MHz(低速)
  • 01:25 MHz(中速)
  • 10:50 MHz(快速)
  • 11:30 pF 时为 100 MHz(高速)(15 pF 时为 80 MHz 输出(最大速度))

GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR)

image.png

作用:这些位通过软件写入,用于配置 I/O 上拉或下拉

  • 00:无上拉或下拉
  • 01:上拉
  • 10:下拉
  • 11:保留

GPIO 端口输入数据寄存器 (GPIOx_IDR)

image.png

作用: 位 31:16 保留,必须保持复位值。 位 15:0 IDRy[15:0]:端口输入数据 (Port input data) (y = 0..15) 这些位为只读形式,只能在字模式下访问。它们包含相应 I/O 端口的输入值。

GPIO 端口输出数据寄存器 (GPIOx_ODR)

image.png

作用: 位 31:16 保留,必须保持复位值。 位 15:0 ODRy[15:0]:端口输出数据 (Port output data) (y = 0..15) 这些位可通过软件读取和写入。 注意:对于原子置位/复位,通过写入 GPIOx_BSRR 寄存器,可分别对 ODR 位进行置位和复 位 (x = A..I/)。

GPIO 端口置位/复位寄存器 (GPIOx_BSRR)

image.png 作用:

位 31:16 BRy:端口 x 复位位 y (Port x reset bit y) (y = 0..15)

这些位为只写形式,只能在字、半字或字节模式下访问。读取这些位可返回值 0x0000。

  • 0:不会对相应的 ODRx 位执行任何操作
  • 1:对相应的 ODRx 位进行复位

注意:如果同时对 BSx 和 BRx 置位,则 BSx 的优先级更高。

位 15:0 BSy:端口 x 置位位 y (Port x set bit y) (y= 0..15)

这些位为只写形式,只能在字、半字或字节模式下访问。读取这些位可返回值 0x0000。

  • 0:不会对相应的 ODRx 位执行任何操作
  • 1:对相应的 ODRx 位进行置位

GPIO 端口配置锁定寄存器 (GPIOx_LCKR)

image.png

image.png

GPIO 复用功能低位寄存器 (GPIOx_AFRL)

image.png

GPIO 复用功能高位寄存器 (GPIOx_AFRH)

image.png