位带操作公式
(addr&0xF0000000)+0x02000000+((addr&0x00FFFFFF)<<5)+(n<<2)
addr:要操作的位所在的寄存器
n:要操作的位号
代码表示
#define GPIOB_ODR_Addr (GPIOB_BASE + 0x0C)
#define PBout(n) *(unsigned int*)((GPIOB_ODR_Addr&0xF0000000)+0x02000000+((GPIOB_ODR_Addr&0x00FFFFFF)<<5)+(n<<2))
PBout(5) = 0; //设定GPIOB引脚5位为0
PBout(8) = 1; //设定GPIOB引脚8位为1