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


主題:如何使用中斷

  共有39522人關注過本帖    
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
謝謝

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

返回首頁

如何使用中斷

用戶名:
            驗證碼: 驗證碼,看不清楚?請點擊刷新驗證碼
內容:
主站蜘蛛池模板: 米奇精品一区二区三区| 一级女性黄 色生活片| 成人国产精品一级毛片视频| 国产成人91精品| 看最刺激的欧美毛片| 99视频在线精品免费观看18| 久草香蕉视频在线观看| 五月狠狠亚洲小说专区| 8050午夜一级二级全黄| 久久99精品久久久久久国产越南| 午夜剧场福利| 亚洲精品一区二区三区婷婷| 免费看成人毛片日本久久| 国产大毛片| 国产玖玖| 国产精品免费播放| 黄色免费看片网站| 精品欧美一区二区三区在线观看| 1024在线看片| 一区二区在线播放福利视频| 久热国产视频| 日韩中文字幕电影在线观看| 亚洲欧洲一二三区机械有限公司| 国产在线高清一级毛片| 视频二区| 看黄色录像一级片| 粉嫩极品国产| 黄色一级片黄色一级片| 激情五月黄色| 92国产福利视频一区二区| 成人免费xxx色视频| 国产精品久久免费| 国产精品九九视频| 国产乱码在线精品可播放| 国产在线干| 国产在线麻豆一区二区| 国内精品久久久久影院薰衣草| 久久精品免费观看视频| 久久久国产在线| 久久99精品久久久久久久野外| 久久精品国产精品亚洲精品|