寄存器位操作总结:
例:1个32位寄存器REG
1.第八位设置为1,其他位置不变
REG |= (1<<8);
2.第八位设置为0,其他位置不变
REG &=~(1<<8);
GPIOA-> BSRRL &=0XFF0F; //将第 4-7 位清 0
GPIOA-> BSRRL |=0X0040; //设置相应位的值,不改变其他位的值
3. 将寄存器REG的第3、5位置“1”
REG |= (1 << 5) | (1 << 3);
4.将寄存器REG的第3、5位清零
REG &= ~( (1 << 5) | (1 << 3) );
3.把两个字节byte1、byte2合并为一个u16
(byte1 << 8) | byte2