在Windows CE增加自定義中斷處理

2021-06-16 23:36:54 字數 1554 閱讀 4825

windows ce增加自定義中斷處理

isq --> interrupt id(

邏輯中斷號

)  --> event

物件。當中斷發生時,

isr(中斷服務例程)返回該中斷號對應的邏輯中斷號,然後盡可能快地返回;隨後ce就

set該邏輯中斷號對應的

event

物件(如果有的話),以喚醒在該

event

等待的ist

(中斷服務執行緒),大部分工作都是由

ist來完成。一般來說

ist是存在驅動程式裡,單其實放在普通的應用程式裡也可以,尤其是對應只有乙個應用程式使用的特殊硬體更方便。因為對應

ce來說其實驅動程式也只是乙個普通的

dll,也是執行在使用者空間。

為了簡單起見我們就直接修改

bsp包的

isr部分,

ist也直接在應用程式裡實現,步驟如下:1、在

bsp的

oalintr.h

裡定義自定義中斷的邏輯中斷值,如:

#define sysintr_myintr  (sysintr_firmware + 10)

2、修改

kernel\hal\cfw.c

中的以下三個函式,增加對自定義中斷的啟用禁用**:

oeminterruptenable(), oeminterruptdisable(), oeminterruptdone()

3、修改

kernel\hal\arm\armint.c

中的oeminterrupthandler()

,對irq

返回邏輯中斷號,如:

else if (intpendval == intsrc_eint2) // eint2

return(sysintr_myintr);4、在

platformbuilder

中重新生成

nk.bin

現在,核心已經支援我們的自定義中斷

sysintr_myint

了,我們在應用程式中就可以把這個

sysintr_myint

與乙個event

物件關聯起來,然後在乙個執行緒裡等待這個

event就ok

了,這個執行緒就是

ist。5、在

ist裡用

interruptinitialize()

將自定義中斷和

event

關聯起來,並

waitforsingleobject()

。注意下面的**是在乙個執行緒裡(即

ist):

hevent = createevent(null, false, false, null));

interruptinitialize(sysintr_myintr, hevent, null, 0));     //

若沒有修改

oeminterruptenable()

,這個呼叫就會失敗

while ( true )

0 給主人留下些什麼吧!~~

在Windows CE增加自定義中斷處理

isq interrupt id 邏輯中斷號 event物件。當中斷發生時,isr 中斷服務例程 返回該中斷號對應的邏輯中斷號,然後盡可能快地返回 隨後ce就set該邏輯中斷號對應的event物件 如果有的話 以喚醒在該event等待的ist 中斷服務執行緒 大部分工作都是由ist來完成。一般來說i...

在Windows CE增加自定義中斷處理

基於 s3c2410 windows ce4.2 bsp 是smdk2410 wince 的中斷處理是三個對映關係 isq interrupt id 邏輯中斷號 event 物件。當中斷發生時,isr 中斷服務例程 返回該中斷號對應的邏輯中斷號,然後盡可能快地返回 隨後ce就 set該邏輯中斷號對應...

自定義view增加動畫效果

通過這一周的學習總算對自定義view比較了解了。所以也想和大家分享一下自定義view的學習方法和我學習的乙個過程。還是來看一下我們每篇比談的我們的自定義view的大綱 1.自定義view單純的用畫筆繪製view 死view 2.自定義view 增加動畫 3.自定義view增加手勢 4.自定義view...