主题 : 奇怪的LCD背光问题 复制链接 | 浏览器收藏 | 打印
追求卓越,拒绝平庸
级别: 新手上路
UID: 25086
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
综合积分: 48 分
注册时间: 2010-07-19
最后登录: 2015-09-06
楼主  发表于: 2010-08-10 09:50

 奇怪的LCD背光问题

下面是友善官方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);
}
但实际情况是这样写不能得到正确结果,而上述代码,即友善的可以得到正确结果。这是为什么呢?是我哪里理解错误了,请高手指点一下!
追求卓越 拒绝平庸
追求卓越,拒绝平庸
级别: 新手上路
UID: 25086
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
综合积分: 48 分
注册时间: 2010-07-19
最后登录: 2015-09-06
1楼  发表于: 2010-08-10 14:54
高手指点一下啊
追求卓越 拒绝平庸