1、就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。BSRR和BRR寄存器赋0是无效的,赋1进行置位或者复位。
2、举个例子说明如何使用这两个寄存器和所体现的优势。例如GPIOE的16个IO都被设置成输出,而每次操作仅需要改变低8位的数据而保持高8位不变,假设新的8位数据在变量Newdata中。
3、库函数方法:
GPIO_SetBits(GPIOE, Newdata & 0xff);
GPIO_ResetBits(GPIOE, (~Newdata & 0xff));
4、寄存器方法一:
GPIOE->BSRR = Newdata & 0xff;
GPIOE->BRR = ~Newdata & 0xff;
5、寄存器方法二:
GPIOE->BSRR = (Newdata & 0xff) | (~Newdata & 0xff)<<16;
6、如果Newdata是16位,把0xff改成0xffff