我的背光驅動解決方案

2021-06-19 11:33:22 字數 1650 閱讀 9206

問題描述:

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 測試物件的邏輯路徑和測試輸入資料的組合幾乎是無窮的,而窮盡測...