公式
清0用 &
置1用 |
&跟~搭配
指定一个位
清0:reg &= ~(1 << n)
置1:reg |= (1 << n)
对几个位
将上面的1替换为一个整体,比如0xf即一次将4位清零/置1
清0:reg &= ~(0xf << n)
置1:reg |= (0xf << n)
例子
对24 - 31 位 清零后对 25 位和 29 位置1
清零:
GPIOC->CRL &= ~(0xFF << 24);
置1:
GPIOC->CRL |= 1<<25;
GPIOC->CRL |= 1<<29;
将3210 4位赋值为 0010
清零:GPIO->CRH &= ~(0xF);
置1:GPIO->CRH |= 1<<1;