激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月


主題:如何使用中斷

  共有39521人關注過本帖    
zj
1樓


如何使用中斷  發帖心情 Post By:2010-3-12 17:20:00   [只看該作者]

我用的是貴公司的EM9160v7.2。
中斷被觸發后,如果不使用EnableExternIRQ函數,還會再次響應中斷嗎?
還有文檔中有下面這段:
當具體的中斷處理函數ExIRQHandler執行完畢時,硬件中斷請求輸入ISA_IRQ1 或ISA_IRQ2 的電平已回到低電平狀態,并確保在系統再次使能外部中斷前一直保持為低,即函數EnableExternIRQ完成前一直保持為低,以防止中斷嵌套。
那么我的情況是:觸發中斷后,我的ISA_IRQ1腳,會一直保持高,這樣是不是會中斷嵌套?
謝謝

  單帖管理 | 引用 | 回復 回到頂部
zxw
2樓


  發帖心情 Post By:2010-3-12 18:10:00   [只看該作者]

當中斷發生后,需要調用EnableExternIRQ,才會再次響應中斷。另外,中斷是由上升沿觸發的,所以你的電平保持是不會發生中斷嵌套的現像。

  單帖管理 | 引用 | 回復 回到頂部
zj
3樓


  發帖心情 Post By:2010-3-16 17:00:00   [只看該作者]

請問下,在沒有調用EnableExternIRQ時,中斷次數會不會累加?
急急急。!

  單帖管理 | 引用 | 回復 回到頂部
zxw
4樓


  發帖心情 Post By:2010-3-16 18:12:00   [只看該作者]

如不使用EnableExternIRQ,系統根本不會響應中斷。其實,這些都是可以實驗一下就能得出結果。從頭文件中也能看到它的描述:

// 功能描述:使能EM9260外部中斷,允許下一次的中斷。
// 輸入參數 hIRQ: 安裝的外部中斷句柄。
// 返回值 = TRUE: 操作成功。
//        = FASLE: 操作失敗。
BOOL   EnableExternIRQ( HANDLE hIRQ );

  單帖管理 | 引用 | 回復 回到頂部
zj
5樓


  發帖心情 Post By:2010-3-16 18:25:00   [只看該作者]

我是用磁塊觸發中斷的,但每次都會出現兩次的中斷。。。。
WaitForSingleObject( lpIRQ->hIRQEvent, INFINITE );
bIrqOccur = 1;
WaitForSingleObject( lpIRQ->hIRQWait, INFINITE );
EnableExternIRQ( lpIRQ->hIRQ );
上面是我的程序,發生中斷時,我就只將BOOL bIrqOccur置1,
然后使用線程同步,阻塞在
WaitForSingleObject( lpIRQ->hIRQWait, INFINITE );
然后在主程序完成后,調用SetEvent(hIRQWait)
但這樣就會出現兩次中斷。
這是為什么呢?怎么實現一次只能發生一次中斷?
當執行完一次中斷時,需要對hIRQEvent作什么嗎?
麻煩幫忙下!
謝謝

  單帖管理 | 引用 | 回復 回到頂部
x10
6樓


  發帖心情 Post By:2010-3-16 21:44:00   [只看該作者]

有沒有用我們的范例程序來響應你的外部中斷。只有上升沿能夠觸發中斷驅動程序的IST,不應當出現兩次中斷的情況。從你的代碼也看不出來如何判斷一次觸發兩次中斷的。另外,一般應把對中斷事件的處理與等待中斷事件放在一起,否則系統延時很大,就沒有什么必要要中斷了。

  單帖管理 | 引用 | 回復 回到頂部
zj
7樓


  發帖心情 Post By:2010-3-16 22:04:00   [只看該作者]

范例程序?有的話麻煩發到oceanlab_zj@hotmail.com
我用中斷,主要是為了激活主線程
主線程中:while(!bIrqOccur)
我在中斷線程中加入了打印信息,發現有兩次打印。

最后問下:對于
hIRQWait = CreateEvent(NULL,false,false,NULL);

我用WaitForSingleObject( lpIRQ->hIRQWait, INFINITE )阻塞,
用SetEvent函數標識句柄后,句柄會不會自動成為未標識的?
謝謝

  單帖管理 | 引用 | 回復 回到頂部
x10
8樓


  發帖心情 Post By:2010-3-17 13:04:00   [只看該作者]

程序在光盤的\software\通訊接口目錄下。程序重發到你的郵箱,請查收。注意在WinCE中的任何線程,都不能有無阻塞的循環存在,否則將大量占用CPU時間,導致其他線程運行異常。通常每個線程可以通過WaitForSingleObject(..)或簡單Sleep(..)方式讓自己掛起。

  單帖管理 | 引用 | 回復 回到頂部
zj
9樓


  發帖心情 Post By:2010-3-17 13:12:00   [只看該作者]

非常感謝。

  單帖管理 | 引用 | 回復 回到頂部
zj
10樓


  發帖心情 Post By:2010-3-18 15:03:00   [只看該作者]

再問,這是我的中斷線程程序
for(;;)
{
    WaitForSingleObject( lpIRQ->hIRQEvent, INFINITE );
    bIrqOccur = 1; // 啟動主線程
    WaitForSingleObject( lpIRQ->hIRQWait, INFINITE );
    EnableExternIRQ( lpIRQ->hIRQ );
}
其中,hIRQWait = CreateEvent(NULL,false,false,NULL);
主線程的最后,標識句柄hIRQWait.
我用磁塊觸發,在不加入
WaitForSingleObject( lpIRQ->hIRQWait, INFINITE );
自己調試發現進入了兩中斷。
我想問,當加入
WaitForSingleObject( lpIRQ->hIRQWait, INFINITE );
為什么還會有兩次中斷。
謝謝


  單帖管理 | 引用 | 回復 回到頂部
x10
11樓


  發帖心情 Post By:2010-3-18 16:05:00   [只看該作者]

方便把你的測試代碼發給我們看看嗎,謝謝!

  單帖管理 | 引用 | 回復 回到頂部
zj
12樓


  發帖心情 Post By:2010-3-18 19:34:00   [只看該作者]

程序已發至support@emtronix.com
我的郵箱是278518766@qq.com
謝謝

  單帖管理 | 引用 | 回復 回到頂部

返回首頁

如何使用中斷

用戶名:
            驗證碼: 驗證碼,看不清楚?請點擊刷新驗證碼
內容:
主站蜘蛛池模板: 亚洲国产精品久久日| jul724青木玲中文字幕| 色婷婷狠狠| 国产成人lu在线视频| 高清国产亚洲va精品| 成年做羞羞免费观看视频网站| 日本久久久久中文字幕| 成人韩免费网站| 欧美一级黄色录相| 国产成人精品日本亚洲专一区| 黄色片一级黄色片| 成人窝窝午夜看片| 国产一区二区三区| 欧美日韩影视| 天天做天天爱天天影视综合| 在线观看不卡| v2ba永久地址在线观看| 久久黄色片| 日韩在线观看不卡| 手机在线日韩高清理论片| 在线观看日韩一区| 任你操网站| 免费国产成高清人在线视频| 美国黄色片视频| 婷婷在线成人免费观看搜索| 成人啪啪www| 国产成人精品精品欧美| 国产亚洲精品国产福利在线观看| 麻豆视频免费在线| 欧美亚洲另类久久综合| 色爱综合网| 日批视频网址免费观看| 午夜男人女人爽爽爽视频| 亚洲视频国产精品| 亚洲欧洲日韩另类自拍| 玉米视频污| 亚洲综合九九| 亚洲一区二区三区麻豆| 亚洲一二三| 亚洲狠狠婷婷综合久久久久网站| 亚洲系列|