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