問題描述:
cpu:pxa270,背光顯示控制晶元lt1937es5。要求實現空閒狀態下關閉led背光燈,工作時,第一次按鍵點亮led燈,後面的按鍵才是工作。
其中lcd_sw為led使能端,接的是pxa270的gpio46口,lcd_pwm是背光明暗控制,接的是gpio14口。
本驅動實現的方法是:使用gpio46口,當監測到按鍵在一定時間內(比如1.5min)無操作,即電平不發生變化,讓gpio46口變為低電平;當監測到其發生變化時,則進行相應的按鍵操作。未使用pwm功能來調節明暗,所以屬於難度非常小的驅動寫法。
實現的具體步驟:
1) 借助目前已有的按鍵驅動,在裡面新增相關gpio口設定;
2) gpio設定如下:設定gpio46為gpio模式;設定gpio46為output模式;設定gpio初始狀態為高電平,即初始點亮螢幕;
3) 在按鍵驅動的工作執行緒裡,判斷waitforsingleobject的狀態,如果為wait_object_0,則表明有按鍵操作;如果為wait_timeout,則表明等待超時,此時設定gpio46為低電平,關閉led燈;
4) 在wait_object_0的迴圈裡,首先判斷gpio46目前的狀態,如果為高電平,說明此時led是點亮狀態,此時按鍵的作用是其本來的操作,本驅動是傳送按鍵訊息給應用程式,如果為低電平,說明此時led燈是熄滅狀態,則此時按鍵的作用即點亮led,那麼此時設定gpio46為高電平,不進行傳送訊息的操作;
5) 在實踐過程中,出現乙個問題,就是按鍵訊息未傳送出去,或許傳送阻塞,為了解決這個問題,在4)步驟中的點亮led燈時順便對按鍵的gpio16口進行了初始化工作,嘗試這樣的方法後,沒有發生阻塞情況。
具體程式:
1) 相關定義
uint32 delaytime = 90000;
#define gpio_pin_46 //1125
#ifdef gpio_pin_46
v_piopregs->gafr1_l &= ~(0x3 << 28); /*set gpio46 as gpio */
v_piopregs->gpdr1 |= (0x1 << 14); /* configure gpio46 as output mode*/
v_piopregs->gpsr1 |= (0x1 << 14); /*set gpio46 to high*/
#endif
2)處理執行緒如下:(紅色部分是我修改的)
dword intprocessthread(void)
#ifdef gpio_pin_16
g_sysintr = sysintr_fun;
#endif
if (!interruptinitialize(g_sysintr, intevent, null, 0))
v_piopregs->gfer0 &= ~(0x1 << 16);
v_piopregs->grer0 &= ~(0x1 << 16);
while(1)
else
else
} }
else if(wait_timeout == status) }
}
WINCE基於PWM實現的背光驅動
loongembedded loongembedded kandi 2010.12.16 類別 wince 驅動開發 loongembedded 硬體 cpu s3c2443 背光ic at1312b lcd kd50g9 40nm a3 系統 wince6.0 1 背光驅動的技術分析 lcd顯示屏...
四極管 WINCE基於PWM實現的背光驅動
wince基於 pwm實現的背光驅動 硬體cpu s3c2443,背光 ic at1312b lcd kd50g9 40nm a3 系統wince6.0 1背光驅動的技術分析 lcd顯示屏自身並不發光,為了可以清楚地看到 lcd顯示屏的內容,需要一定的白光背光源。在中小尺寸 lcd顯示屏中,一般採用...
問題驅動的軟體測試設計 解決方案
軟體測試設計是整個軟體測試過程中非常重要的測試活動,其輸出的工作產品都將會直接影響測試效率和有效性 不管是文件化輸出,還是僅僅存在於測試人員的頭腦中 進而影響軟體產品的質量。而在實際測試設計過程中,測試人員卻面臨著各種各樣的挑戰和問題 1 測試物件的邏輯路徑和測試輸入資料的組合幾乎是無窮的,而窮盡測...