私は少しビット操作をしていて、ちょっと実験しようとしています。32ビットレジスタの特定のビットを書き込んで読み取る方法
のは、私は以下のように構築された32ビット・レジスタを持っているとしましょう:
Bit 31:12 RESERVED
Bit 11 CONFIG1
Bit 10 CONFIG2
Bit 9:0 DATA
すでにレジスタにデータを書き込むための関数が存在する:
#define WR_REG_32(address, value) (*((volatile u32 *)(address)) = (value))
私が書きたいですビット10(CONFIG2)で値0x0。値は、例えばのような形式である必要があります。
0x00005000
だから、どのように他のビットを触れることなくビット10に値を0x0を書き込むために使用するために何進値を知っていますか?
また、ビット0-9からの値だけを32ビットレジスタから読み取る最も簡単な方法は何ですか?
この目的のために、shift、andなどのビット演算が行われます。レジスタに32ビットがある場合は、32ビットを読み込みます。それだけで、上記の操作を使用して必要なビットを得ることができます。 – zubergu
関連リストのトップから:[1ビットをどのように設定、クリア、トグルするのですか?](https://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle -a-single-bit?rq = 1)... – ilkkachu
また、https://stackoverflow.com/questions/10493411/what-is-bit-masking – ilkkachu