BSRR寄存器/BRR寄存器(端口位设置/清除寄存器)
2019-09-28 13:47:59    1    0    0
yang

BSRR 寄存器是端口位设置/清除寄存器。该寄存器和 ODR 寄存器具有类似的作用,都可
以用来设置
GPIO 端口的输出位是 1 还是 0

例如你要设置 GPIOA 的第 1 个端口
值为
1,那么你只需要往寄存器 BSRR 的低 16 位对应位写 1 即可:

GPIOA->BSRR=1<<1;​


如果你要设置 GPIOA 的第 1 个端口值为 0,你只需要往寄存器高 16 位对应为写 1 即可:

GPIOA->BSRR=1<<(16+1)​


该寄存器往相应位写 0 是无影响的,所以我们要设置某些位,我们不用管其他位的值。
BRR 寄存器是端口位清除寄存器。该寄存器的作用跟 BSRR 的高 16 位雷同,这里就不做
详细讲解。在
STM32 固件库中,通过 BSRR BRR 寄存器设置 GPIO 端口输出是通过函数
GPIO_SetBits()和函数 GPIO_ResetBits()来完成的。

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)​


在多数情况下,我们都是采用这两个函数来设置 GPIO 端口的输入和输出状态。比如我们要设
GPIOB.5 输出 1,那么方法为:

GPIO_SetBits(GPIOB, GPIO_Pin_5);​


反之如果要设置 GPIOB.5 输出位 0,方法为:

GPIO_ResetBits (GPIOB, GPIO_Pin_5);​


GPIO
相关的函数我们先讲解到这里。虽然 IO 操作步骤很简单,这里我们还是做个概括性
的总结,操作步骤为:
1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()
2) 初始化 IO 参数。调用函数 GPIO_Init();
3
) 操作 IO。操作 IO 的方法就是上面我们讲解的方法。
上面我们讲解了
STM32 IO 口的基本知识以及固件库操作 GPIO 的一些函数方法,下面我
们来讲解我们的跑马灯实验的硬件和软件设计。

Pre: ODR寄存器(端口输出数据寄存器)

Next: 按键的使用

1
Table of content