BSRR:Bit Set/Reset Register,设置复位寄存器,用于对GPIO数据输出进行调制,通过只用调制BSRR来处理16位的GPIO接口输出。BSRR的低16位用于进行设置,高16位用于清除,即低16位在设置之后,会将GPIO的对应数据设置为1;高16位在设置之后,会将GPIO的对应数据设置为0。 故可看如下的HAL库GPIO输出转置的设置: v
因为BSRR的 低 16bsts 恰好是set操作,而高16bit是 reset 操作 而BRR 低 16bits 是reset 操作。 简单地说GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。 另一个寄存器GPIOx_BRR只有低16位有效,与GPIOx_BSRR的高16位具有相同功能。 举个例子说明如何使用这两个寄存器和所体现的优势。
GPIO_ResetBits(GPIOD, (~data & 0xff00)); 也可以直接操作这两个寄存器: GPIOD->BSRR = data & 0xff00; GPIOD->BRR = ~data & 0xff00; 规则: 一、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端口置'1';而置GPIOD->BSRR低16位的某位为'0',则对应的I/O端口不变。 二、置GPIOD->B...
(1)ODR设置位值时是影响其他的位,ODR使用时先读取其状态才能设置其值 (2) BSRR寄存器设置位值的时候,不会影响到其他的位的输出或输入。
GPIOB->BSRR = 0x01就是把GPIOB port 0升为高电平\r\nGPIOB->BRR = 0x01就是把GPIOB port 0降为低电平\r\nGPIOB->BSRR = 0x02就是把GPIOB port 1升为高电平\r\nGPIOB->BRR = 0x02就是把GPIOB port 1降为低电平\r\nGPIOB->BSRR = 0x04就是把GPIOB port 2升为高电平\r\...
GPIOB->BSRR = 0x02就是把GPIOB port 1升为高电平 GPIOB->BRR = 0x02就是把GPIOB port 1降为低电平 GPIOB->BSRR = 0x04就是把GPIOB port 2升为高电平 GPIOB->BRR = 0x04就是把GPIOB port 2降为低电平 GPIOB->BSRR = 0x08就是把GPIOB port 3升为高电平 GPIOB->BRR = 0x08...
GPIOE->BSRR = 0x00400080; 如果没有BSRR的高16位,则要分2次操作,结果造成位7和位6的变化不同步! GPIOE->BSRR = 0x80; GPIOE->BRR = 0x40; 规则: 一、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端口置'1';而置GPIOD->BSRR低16位 ...
stm32中“GPIOB->BSRR”这句话是什么意思? GPIOB->BSRR = 0x01就是把GPIOB port 0升为高电平\r\nGPIOB->BRR = 0x01就是把GPIOB port 0降为低电平\r\nGPIOB->BSRR = 0x02就是把GPIOB port 1升为高电平\r\nGPIOB->BRR = 0x02就是把GPIOB port 1降为低电平\r\nGPIOB->BSRR = 0
GPIO_WriteBit是写入一个变量,在运行中它的值是变化的。GPIO->BSSR是写入一个1,当然1就是1必须在...
0x01是8位的 二进制是00000001 这里要转成32位的 即0x0001,这句话的意思是将这个1转换成32位之后左移pinpos这个变量值的这么多位!串口编程啊,孩子,这个GPIO口的BSRR寄存器置位操作!(