GPIO寄存器
1、端口配置低寄存器(GPIOx_CRL)
32位寄存器,控制对应端口的0~7引脚,每4位对应一个引脚
4位中CNF控制端口模式,MODE控制输入输出及传输速率
寄存器:

端口配置如下:

2、端口配置高寄存器(GPIOx_CRH)
同GPIO端口配置低寄存器
3、端口输入数据寄存器(GPIOx_IDR)
高16位保留为0,低16位对应16个引脚
这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态。

4、端口输出数据寄存器(GPIOx_ODR)
高16位保留为0,低16位对应16个引脚
这些位可读可写并只能以字(16位)的形式操作。
注:对GPIOx_BSRR(x = A…E),可以分别地对各个ODR位进行独立的设置/清除。

5、端口位设置/清除寄存器(GPIOx_BSRR)
BRy: bit reset
这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:清除对应的ODRy位为0BSy: bit set
这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:设置对应的ODRy位为1注:如果同时设置了BSy和BRy的对应位,BSy位起作用。
寄存器:

6、端口位清除寄存器(GPIOx_BRR)
高16位保留,低16位使用
置0:对对应的ODRy位不产生影响
置1:设置对应的ODRy位为0

注:端口位清除寄存器的存在相当于代替了端口位设置/清除寄存器的高16位,可以看成BSRR寄存器的低16位用于设置端口位,BRR的低16位用于清楚端口位
7、端口配置锁定寄存器(GPIOx_LCKR)
低16位用于控制0~15的引脚,置1锁存相应端口,位16为锁键。
GPIO端口配置低寄存器


注:
//开锁程序:(GPIOB为例)
uint32_t t;
GPIOB->LCKR|=0x00010000;//LCKK写入1
GPIOB->LCKR&=0x0000ffff;//LCKK写入0
GPIOB->LCKR|=0x00010000;//LCKK写入1
t=GPIOB->LCKR;//LCKK读0
t=GPIOB->LCKR;//LCKK读出1
//开启锁定寄存器模式
GPIOB->LCKR&=0x0000ffff;//LCKK写入0
GPIOB->LCKR=1<<5;//锁定PB5
文章详细介绍了GPIO端口的几个关键寄存器,包括GPIOx_CRL和GPIOx_CRH用于配置端口模式和输入输出特性,GPIOx_IDR用于读取输入数据,GPIOx_ODR用于设置和读取输出数据,GPIOx_BSRR和GPIOx_BRR分别用于位设置和清除,以及GPIOx_LCKR用于端口配置锁定。
921

被折叠的 条评论
为什么被折叠?



