BSRR:Bit Set/Reset Register,设置复位寄存器,用于对GPIO数据输出进行调制,通过只用调制BSRR来处理16位的GPIO接口输出。BSRR的低16位用于进行设置,高16位用于清除,即低16位在设置之后,会将GPIO的对应数据设置为1;高16位在设置之后,会将GPIO的对应数据设置为0。 故可看如下的HAL库GPIO输出转置的设置: voidHAL_GPIO...
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寄存器设置位值的时候,不会影响到其他的位的输出或输入。
BSRR(Bit Set/Reset Register):这个寄存器用于设置或清除GPIO引脚的输出状态。类似于ODR寄存器,每个引脚对应一个比特位,但BSRR寄存器具有更多的功能。比特位设置为1时,表示设置引脚为高电平输出;比特位设置为0时,表示设置引脚为低电平输出。同时,通过设置对应的比特位,可以将引脚设置为高电平或低电平输出的同时,将其它...
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\...
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。 GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。
直到今天查找F1和F4的GPIO操作区别时, 才发现BSRR的神奇之处。 (1) BSRR: 写入1生效, 写入0无动作. 同样置/复位, 比用ODR操作编译后要快几个动作, 想想以前用或/与操作, 真是多余了! 例如: PB1要设高电平, PB11设低电平;注意看注释 // 通过 ODR 寄存器...
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...
简单地说GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。另一个寄存器GPIOx_...