位操作是 MCU 编程的看家本领。
置位第 n 位 REG |= (1 << n);
清零第 n 位 REG &= ~(1 << n);
翻转第 n 位 REG ^= (1 << n);
读取第 n 位 bit = (REG >> n) & 1;
一次置位多位 REG |= (0b1011 << 4); // 置位 bit7,5,4,3
清零多位再赋值(配置寄存器常用) REG = (REG & ~MASK) | VALUE;
坑提醒: - volatile:操作硬件寄存器务必加 volatile,否则编译器优化掉"无用"读写。 - 读改写 vs 直接写:有些寄存器写1清零(如中断标志),不能读改写,要直接写1。 - 位域 struct 不可移植:编译器对位域排布不同,跨平台/跨编译器别用位域操作硬件。