觸控中斷分析:
wince500/platform/smdk2440/kernel/hal/arm armint.c
按下觸控,首先產生intpendval == intsrc_adc ad硬中斷中斷,下面程式判斷是按下還是提起操作,修改odo_tsb->status = touch_pen_up變數的值。並向上層返回sysintr_touch_changed軟中斷值。
定時器1會一直監控按下的狀態,intpendval == intsrc_timer1如果一直按下會一直產生sysintr_touch軟中斷值返回給上層。
按鍵會出現四種case
case1:長按放下,定時器會首先檢測到按鍵放下率先向上層返回sysintr_touch_changed中斷值,並改變odo_tsb->status = touch_pen_up的值,然後是adc檢測到按鍵返回sysintr_touch_changed中斷值,同時也改變odo_tsb->status = touch_pen_up的值。
case2:短按放下,由於定時器在定時的時間內沒有檢測到,所以只會產生adc中斷,改變odo_tsb->status = touch_pen_up的值。並向上層返回sysintr_touch_changed軟中斷值。
case3:除錯的時候發現,在短按放下的時候也會只產生定時中斷,原因不詳。
case4:另外會極少發生一種情況是:在短按放下會產生adc產生touch_pen_down,但後面定時器和adc都沒有檢測到touch_pen_up,導致bell一直叫。
加上觸控bell聲音驅動:
只需在wince500/platform/smdk2440/kernel/hal/arm armint.c 三個地方加上bell的開關操作就可以了。
在adc中斷else if (intpendval == intsrc_adc)這個分支中
if( (s2440adc->radcdat0 & 0x8000) || (s2440adc->radcdat1 & 0x8000) )
wince7下的觸控螢幕驅動
在嵌入式系統中較為常用的是四線電阻式觸控螢幕,通過檢測x軸和y軸的電壓,來確定觸點的位置。一般觸控螢幕系統結構為 觸控螢幕 觸控螢幕控制器 處理器。wince7下觸控螢幕的驅動分為pdd層 位於bsp目錄中 和mdd層 位於public目錄中 pdd層和mdd層通過ddsi介面函式連線,mdd層和上...
wince下裝驅動
前邊說了如何在開發版上裝wince.現在我手上有乙個usb的攝像頭,為了要他能在開發板上使用,我得給他裝上驅動.產家提供了dll和需要修改登錄檔的說明.下邊說下步驟,開啟之前做wince核心定製燒寫的工程,把驅動檔案,假設叫a.dll,拷貝到工程目錄下,d wince420 public wince...
wince 驅動練習
wince 驅動練習 寫乙個 led 的驅動 準備放到流驅動中 c wince600 platform smdk2440a src drivers gpio 資料夾 複製到當前目錄並改名為 led 並修改 drivers 資料夾下dir 檔案 新增 led c wince600 platform s...