STM32的GPIO的寄存器配置

GPIO相关配置寄存器

STM32F103ZET6一共有7组IO口,每组IO口有16个IO,每组IO口包含7个寄存器,一共可以控制一组GPIO的16个IO口。

  • GPIOx_CRL :端口配置低寄存器
  • GPIOx_CRH:端口配置高寄存器
  • GPIOx_IDR:端口输入寄存器
  • GPIOx_ODR:端口输出寄存器
  • GPIOx_BSRR:端口位设置/清除寄存器
  • GPIOx_BRR :端口位清除寄存器
  • GPIOx_LCKR:端口配置锁存寄存器

每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)

1. GPIOx_CRL :端口配置低寄存器

在这里插入图片描述
STM32中的32位寄存器,每4位(MODEy和CNFy)配置一个IO口,所以端口配置低寄存器能配置8个IO口。
但是STM32的一组IO口中有16个IO口,所以需要两个32位寄存器来配置IO口。
在这里插入图片描述

2. GPIOx_CRH:端口配置高寄存器

在这里插入图片描述

3. GPIOx_IDR:端口输入寄存器

在这里插入图片描述
IDR寄存器用来读取IO口的电平状态,输入或者输出模式时都能读取IO口的电平状态。如,IO口的电平状态是高电平,那么和IO口对应的寄存器的位的值就是1。
因为每一组IO口有16个IO,所以只需要用到寄存器的低16位即可。高16位保留。

4. GPIOx_ODR:端口输出寄存器

在这里插入图片描述
ODR寄存器可以控制IO口的输出。如,把寄存器的某一位设置为1的话,那么相应的IO口就输出高电平。
因为每一组IO口有16个IO,所以只需要用到寄存器的低16位即可。高16位保留。
在这里插入图片描述
除此之外,在输入模式下,ODR寄存器还可以用来配置是上拉输入还是下拉输入。

5. GPIOx_BSRR:端口位设置/清除寄存器

在这里插入图片描述
BSRR寄存器通过直接控制ODR寄存器来间接配置IO口的输出。
BSRR寄存器低16位,对应位设置为1,那么IO口输出为高电平,对应位设置为0,那么对应IO口不产生任何影响。
BSRR寄存器高16位,对应位设置为1,那么IO口输出为低电平,对应位设置为0,那么对应IO口不产生任何影响。

6. GPIOx_BRR :端口位清除寄存器

在这里插入图片描述
BRR寄存器的作用和BSRR寄存器的高16位作用相同。
通常是只用BSRR寄存器的低16位和BRR寄存器的低16位,不用BSRR寄存器的高16位。

7. GPIOx_LCKR:端口配置锁存寄存器

猜你喜欢

转载自blog.csdn.net/mahoon411/article/details/107997355