GPIO(二)相关寄存器
与GPIO相关的7个寄存器
每个GPIO端口有7个相关的寄存器:
- 2个32位配置寄存器(GPIOx_CRL,GPIOx_CRH);
- 2个32位数据寄存器(GPIOx_IDR和GPIOx_ODR);
- 1个32位置位/复位寄存器(GPIOx_BSRR);
- 1个16位复位寄存器(GPIOx_BRR);
- 1个32位锁定寄存器(GPIOx_LCKR);
1.1 GPIOx_CRL(端口配置低寄存器)
GPIOx_CRL(Port configuration register low),x可以是A-G。
该寄存器配置的每个GPIO的 0-7 这个8个位,所以叫低寄存器。
1.1.1 MODE:每个端口有2个MODE位进行控制。
00:输入模式(复位后的状态)
01:输出模式,最大速度10MHz
10:输出模式,最大速度2MHz
11:输出模式,最大速度50MHz
1.1.2 CNF:每个端口有2个CNF位进行控制。
当MODE是00 (输入模式)
00:模拟输入模式
01:浮空输入模式(复位后的状态)
10:上拉/下拉输入模式
11:保留
当MODE>00(输出模式)
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式
1.2 GPIOx_CRH(端口配置高寄存器)
GPIOx_CRH(Port configuration register high)。该寄存器配置的是每个端口的 8-15引脚,配置方式和低位寄存器完全一样。
1.3 GPIOx_IDR(端口输入数据寄存器)
Port input data register
保留位始终读为0。剩下的分别对应每个引脚的输入值。
1.4 GPIOx_ODR(端口输出数据寄存器)
Port output data register
保留位始终读为0。剩下的分别对应每个引脚的输出值。
1.5 GPIOx_BSRR(端口位设置清除寄存器)
Port bit set/reset register
- 高16位是用清除对应的数据输出寄存器的位(0-15)的值:设置为0不影响,设置为1会清除ODR对应的位的值(置为0)。
- 低16位是用设置对应的数据输出寄存器的位(0-15)的值:设置为0不影响,设置为1会设置ODR对应的位的值(置为1)。
1.6 GPIOx_BRR(端口位清除寄存器)
这个寄存器具有了GPIOx_BSRR一半的功能:清除。
1.7 GPIOx_LCKR(端口配置锁定寄存器)
Port configuration lock register
该寄存器用来锁定端口位的配置。位[15:0]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKR[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。
每个锁定位锁定控制寄存器(CRL,CRH)中相应的4个位(CNF2位和MODE2位)。
第16位用来激活锁定寄存器,必须按照规定的时序来操作才行: 写1 -> 写0 -> 写1 -> 读0 -> 读1。
对0-15位:
- 0:不锁定对应端口的配置。
- 1:锁定对应端口的配置。
1 游客 2025-09-01 11:26 回复
1
1 游客 2025-09-01 12:00 回复
1
1 游客 2025-09-01 12:01 回复
1
1 游客 2025-09-01 12:04 回复
1
1 游客 2025-09-01 12:05 回复
-1 OR 2+557-557-1=0+0+0+1