下面是友善官方wince6.0 BSP中关于打开背光电源的代码,但是代码和三星2440的官方手册不一致:
// restore power to the backlight
//
void BL_PowerOn(BOOL bInit)
{
//
// Add power-on GPIO register setting
//
v_pIOPRegs = (IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
if (v_pIOPRegs) {
if (!VirtualCopy((PVOID)v_pIOPRegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE|PAGE_NOCACHE)) {
VirtualFree((PVOID)v_pIOPRegs, 0, MEM_RELEASE);
v_pIOPRegs = 0;
}
}
if(v_pIOPRegs) {
v_pIOPRegs->rGPGCON &= ~(3 << 8);
v_pIOPRegs->rGPGCON |= (1 << 8);
}
BL_On(TRUE);
}
2440手册上是这样的定义的:
GPG4 [9:8] 00 = Input 01 = Output
10 = EINT[12] 11 = LCD_PWRDN
按照手册上说代码应该这样写才对啊:
if(v_pIOPRegs) {
v_pIOPRegs->rGPGCON &= ~(3 << 8);
v_pIOPRegs->rGPGCON |= (3<< 8);
}
但实际情况是这样写不能得到正确结果,而上述代码,即友善的可以得到正确结果。这是为什么呢?是我哪里理解错误了,请高手指点一下!