mic*_*elo 2 c bit-manipulation firmware bitwise-operators
data |= (1 << 3)在不中断其他位的情况下设置位(3).data &= ~(1 << 4)在不中断其他位的情况下复位bit(4).如何在一条指令中完成这两项任务?
(因为这实际上只是为了可读性,我计划#define以一种可爱的方式使用它#define gpioHigh(x) <insert code>.另一种方法是弄清楚如何正确地将gpio指针传递给我为此目的而明确写出的函数,但是这样做)
谢谢!
麦克风
在单个指令中不可能.这是因为您需要对不同的位执行3种操作:
如何使用由二进制数字组成的位掩码从三种可能性中选择一种?
当然,你可以用一行来做,例如:
data = (data | (1 << 3)) & ~(1 << 4)
Run Code Online (Sandbox Code Playgroud)