修改寄存器的位操作方法

Posted zhj868

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改寄存器的位操作方法相关的知识,希望对你有一定的参考价值。

使用 C 语言对寄存器赋值时,我们常常要求只修改该寄存器的某几位的值,且其它的寄存器位不变,这个时候我们就需要用到 C 语言的位操作方法了。
1. 把变量的某位清零
此处我们以变量 a 代表寄存器,并假设寄存器中本来已有数值,此时我们需要把变量a 的某一位清零,且其它位不变,方法见代码清单 6-1。
技术图片
2. 把变量的某几个连续位清零
由于寄存器中有时会有连续几个寄存器位用于控制某个功能,现假设我们需要把寄存器的某几个连续位清零,且其它位不变,方法见代码清单 6-2。
技术图片
3. 对变量的某几位进行赋值。
寄存器位经过上面的清零操作后,接下来就可以方便地对某几位写入所需要的数值了,且其它位不变,方法见代码清单 6-3,这时候写入的数值一般就是需要设置寄存器的位参数。
技术图片
4. 对变量的某位取反
某些情况下,我们需要对寄存器的某个位进行取反操作,即 1 变 0 ,0 变 1,这可以直接用如下操作,其它位不变,见代码清单 6-4。

 技术图片

 

 

 
 
 
 
 
 
 
 

以上是关于修改寄存器的位操作方法的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式linux C语言——位运算的使用

c语言的位操作

从最高有效位或高位开始提取寄存器的位

uvm寄存器模型怎么给定数据的位宽

翻转mxcsr寄存器中的位

STM32的位操作问题