一、寄存器说明
GPIO相关配置寄存器:
端口模式寄存器(GPIOx_MODER
)
端口输出类型寄存器(GPIOx_OTYPER
)
端口输出速度寄存器(GPIOx_OSPEEDR
)
端口上下拉寄存器(GPIOx_PUPDR
)
端口输入数据寄存器(GPIOx_IDR
)
端口输出数据寄存器(GPIOx_ODR
)
端口置位/复位寄存器(GPIOx_BSRR
)
端口配置锁存寄存器(GPIOx_LCKR
)
复位功能寄存器(低位GPIOx_AFRL
& GPIOx_AFRH
)
二、寄存器位说明
1、端口模式寄存器(GPIOx_MODER
)
说明:两位表示一个IO的输出模式。这些位通过软件写入,用来配置I/O方向模式。
00:输入(复位状态)
01:通用输出模式
10:复用功能模式
11:模拟模式
2、端口输出类型寄存器(GPIOx_OTYPER
)
位31:16 保留
位15:0 OTy[1:0]:端口x配置位。这些位通过软件写入,用于配置I/O端口的输出类型(OTYPER寄存器每一位控制一个IO,低16位控制一组IO的16个IO,高16位保留)。
0:输出推挽(复位状态)
1:输出开漏
3、端口输出速度寄存器(GPIOx_OSPEEDR
)
位2y:2y+1 OSPEEDRy[1:0]:端口x配置位,这些位通过软件写入,用来配置I/O输出速度(OSPEEDR寄存器,每2位控制一个IO口,32位控制一组IO口的16个IO)。
00:2MHz(低速)
01:25MHz(中速)
10:50MHz(快速)
11:30pF时是100MHz(高速)(15pF时为80MHz输出)
4、端口上下拉寄存器(GPIOx_PUPDR
)
位2y:2y+1 PUPDRy[1:0]:端口x配置位,这些位通过软件写入,用于配置I/O上拉或者下拉。
00:无上拉或下拉
01:上拉
10:下拉
11:保留
5、端口输入数据寄存器(GPIOx_IDR
)
位31:16 保留必须保持复位值
位15:0 IDRy[15:0]:端口输入数据,这些位为只读形式,只能在字模式下访问。它们包含I/O端口的输入值。
6、端口输出数据寄存器(GPIOx_ODR
)
位31:16:保留,必须为复位值
位15:0 ODRy[15:0]:端口输出数据,这些位可通过软件读取和写入。
7、端口置位/复位寄存器(GPIOx_BSRR
)
位31:16 BRy:端口x复位位y,这些位为只写形式,只能在字、半字或者字节模式下访问,读取这些位可返回0x0000。
0:不会对相应的ODRx位执行任何操作
1:对相应的ODRx位进行复位
位15:0 BSy:端口x置位位y,这些位为只写形式,只能在字、半字、字节模式下访问。读取这些位可返回0x0000。
0:不会对相应的ODRx为执行任何操作
1:对相应的ODRx为执行置位