对寄存器中的某一位进行操作
如果是封装到具体功能Bit以及bit组的代码工程,可以直接进行赋值。封装代码的方式可以参看这个链接 嵌入式中的C:联合体 union以及一般使用方式
如果是整个寄存器呢
比如stm32寄存器映射的时候标准库是这么处理的
(unsigned int)(0x4002 0410) = 0xFFFF;
对整个寄存器进行赋值。
但是如果只想操作其中的1位或者几位,可以使用移位操作。
清零
将第7位清0
a = (a & ~(1<<7));
a &= ~(1<<7);
置位
a = (a | 1<<7);
a |= 1<<7;
读位
a = 0xA0;
b = ( a&(1<<7) ) >> 7;