STM32的GPIO的七个寄存器的配置说明

STM32的GPIO的七个寄存器的配置说明

每组GPIO口都配置有七个寄存器,

  1. 端口配置低寄存器GPIOx_CRL
  2. 端口配置高寄存器(GPIOx_CRH)
  3. 端口输入数据寄存器(GPIOx_IDR)
  4. 端口输出数据寄存器(GPIOx_ODR)
  5. 端口位设置/ 清除寄存器(GPIOx_BSRR)
  6. 端口位清除寄存器(GPIOx_BRR)
  7. 端口配置锁定寄存器(GPIOx_LCKR)

首先看看为什么端口配置需要两个寄存器CRL和CRH,因为STM32是32位的,由于配置每个I/O口需要四位(详见中文数据手册)如下图在这里插入图片描述
一组有16个I/O口,一共需要164=64位,所以需要两个寄存器322=64才满足要求。

CRL端口配置低寄存器控制是0-7位,CRH端口高寄存器控制的是8-15位.
其中一个控制一个I/O口需要四位,其中低两位控制的是速度Speed,高两位控制的是输入输出模式Mode,详见中文数据手册P113
在这里插入图片描述
IDR:端口输入数据寄存器
32个I/O只需要用到IDR的前16位(0-15)

ODR输出数据寄存器和IDR相反,也是只用到前16位,例如ODR的第一位设置为0则代表P0口输出低电平,
ODR的第2位设置为1则代表P2口输出高电平.

BSRR:端口位设置/ 清除寄存器(GPIOx_BSRR),该寄存器其实是间接控制ODR寄存器

GPIOx->BSRR = GPIO_Pin; //端口位设置或清除
注:GPIO_Pin为(0…15)中任意接口
有了GPIOx->BRR清除寄存器,并且与GPIOx->BSRR高16为功能相同

猜你喜欢

转载自blog.csdn.net/qq_43445076/article/details/88896383