弱问:写驱动时对寄存器的C语言操作
最近在看别人写的驱动时总是遇到一些C语言用法,句子符号能看懂,但实际的意思不明白,如下语句:
// LCD_PWREN(GPG4)
s2440IOP->GPGCON &= ~(3 << 8);
s2440IOP->GPGCON |= (1 << 8);
s2440IOP->GPGDAT |= (1 << 4);
// LCD _nRESET control
s2440IOP->GPBCON = (s2440IOP->GPBCON & ~(3<<2)) |(1<<2);
s2443IOP->GPBDAT |= (1<<1);
我知道这是对GPG和GPB的寄存器操作,但直接赋值不就行了吗?为什么要用这种格式写?这样写是否是对寄存器的某一位进行的单独操作?请大侠们指点。