1. IO口和IO和寄存器的关系
一共7组(A、B、C......)IO口,每组IO口有16个IO(16个引脚),每个引脚都是由10个寄存器控制,寄存器有32位和16位的,可以分为(每2|1位)控制一个IO。列子:
2. 寄存器分类和作用:
GPIO 端口模式寄存器 (GPIOx_MODER)
作用: 这些位通过软件写入,用于配置 I/O 方向模式。
- 00:输入(复位状态)
- 01:通用输出模式
- 10:复用功能模式
- 11:模拟模式
GPIO 端口输出类型寄存器(GPIOx_OTYPER)
作用: 位 31:16 保留,必须保持复位值。 位 15:0 OTy[1:0]:端口 x 配置位 (Port x configuration bits) (y = 0..15)。 这些位通过软件写入,用于配置 I/O 端口的输出类型。
- 0:输出推挽(复位状态)
- 1:输出开漏
GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR)
作用:这些位通过软件写入,用于配置 I/O 输出速度。
- 00:2 MHz(低速)
- 01:25 MHz(中速)
- 10:50 MHz(快速)
- 11:30 pF 时为 100 MHz(高速)(15 pF 时为 80 MHz 输出(最大速度))
GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR)
作用:这些位通过软件写入,用于配置 I/O 上拉或下拉。
- 00:无上拉或下拉
- 01:上拉
- 10:下拉
- 11:保留
GPIO 端口输入数据寄存器 (GPIOx_IDR)
作用: 位 31:16 保留,必须保持复位值。 位 15:0 IDRy[15:0]:端口输入数据 (Port input data) (y = 0..15) 这些位为只读形式,只能在字模式下访问。它们包含相应 I/O 端口的输入值。
GPIO 端口输出数据寄存器 (GPIOx_ODR)
作用: 位 31:16 保留,必须保持复位值。 位 15:0 ODRy[15:0]:端口输出数据 (Port output data) (y = 0..15) 这些位可通过软件读取和写入。 注意:对于原子置位/复位,通过写入 GPIOx_BSRR 寄存器,可分别对 ODR 位进行置位和复 位 (x = A..I/)。
GPIO 端口置位/复位寄存器 (GPIOx_BSRR)
作用:
位 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 位进行置位