這張圖是一條外部中斷線或外部事件線的示意圖
,圖中訊號線上劃有一條斜線
,旁邊標誌
19字樣的注釋
,表示這樣的線路共有19套
.圖中的藍色虛線箭頭
,標出了外部中斷訊號的傳輸路徑
,首先外部訊號從編號
1的晶元管腳進入
,經過編號
2的邊沿檢測電路
,通過編號
3的或門進入中斷掛起請求暫存器
,最後經過編號
4的與門輸出到
nvic
中斷檢測電路
,這個邊沿檢測電路受上公升沿或下降沿選擇暫存器控制
,使用者可以使用這兩個暫存器控制需要哪乙個邊沿產生中斷
,因為選擇上公升沿或下降沿是分別受
2個平行的暫存器控制
,所以使用者可以同時選擇上公升沿或下降沿
,而如果只有乙個暫存器控制
,那麼只能選擇乙個邊沿了
. 按下來是編號
3的或門
,這個或門的另乙個輸入是軟體中斷
/事件暫存器
,從這裡可以看出
,軟體可以優先於外部訊號請求乙個中斷或事件
,即當軟體中斷
/事件暫存器的對應位為
"1"時
,不管外部訊號如何,編號
3的或門都會輸出有效訊號
. 乙個中斷或事件請求訊號經過編號
3的或門後
,進入掛起請求暫存器
,到此之前
,中斷和事件的訊號傳輸通路都是一致的
,也就是說
,掛起請求暫存器中記錄了外部訊號的電平變化
. 外部請求訊號最後經過編號
4的與門,向
nvic
中斷控制器發出乙個中斷請求
,如果中斷遮蔽暫存器的對應位為
"0",
則該請求訊號不能傳輸到與門的另一端
,實現了中斷的遮蔽
. 明白了外部中斷的請求機制
,就很容易理解事件的請求機制了
.圖中紅色虛線箭頭
,標出了外部事件訊號的傳輸路徑
,外部請求訊號經過編號
3的或門後
,進入編號
5的與門
,這個與門的作用與編號
4的與門類似
,用於引入事件遮蔽暫存器的控制
;最後脈衝發生器的乙個跳變的訊號轉變為乙個單脈衝
,輸出到晶元中的其它功能模組
.從這張圖上我們也可以知道
,從外部激勵訊號來看
,中斷和事件的產生源都可以是一樣的
.之所以分成
2個部分
,由於中斷是需要
cpu參與的
,需要軟體的中斷服務函式才能完成中斷後產生的結果
;但是事件
,是靠脈衝發生器產生乙個脈衝
,進而由硬體自動完成這個事件產生的結果
,當然相應的聯動部件需要先設定好
,比如引起
dma操作
,ad轉換等
;簡單舉例:外部
i/o觸發
ad轉換
,來測量外部物品的重量
;如果使用傳統的中斷通道,需要
i/o觸發產生外部中斷
,外部中斷服務程式啟動
ad轉換
,ad轉換完成中斷服務程式提交最後結果
;要是使用事件通道
,i/o
觸發產生事件
,然後聯動觸發
ad轉換
,ad轉換完成中斷服務程式提交最後結果
;相比之下
,後者不要軟體參與
ad觸發
,並且響應速度也更塊
;要是使用事件觸發
dma操作
,就完全不用軟體參與就可以完成某些聯動任務了。
總結:可以這樣簡單的認為
,事件機制提供了乙個完全有硬體自動完成的觸發到產生結果的通道
,不要軟體的參與
,降低了
cpu的負荷
,節省了中斷資源,提高了響應速度
(硬體總快於軟體
),是利用硬體來提公升
cpu晶元處理事件能力的乙個有效方法
;
第十四章 過載操作與轉換 一
1 這4個符號不能過載 2 過載操作必須有乙個類型別的運算元 強制過載操作符不能重新定義在已有的內建型別中 3 優先順序和結合性是固定的 4 過載後 不再具有短路求值特性 1 必須作為非成員函式 2 輸出 ostream operator ostream os,const classtype obj...
第十四章 過載操作與轉換 二
14.9 轉換與類型別 1 轉換操作符 例子 class smallint operator int const 沒有返回型別,沒有引數列表,const型別 private stad size t val 2 只要存在轉換,編譯器就會在內建轉化的地方就會自動應用之,所以一般乙個類中乙個型別轉換就足夠...
第十四章 輸入輸出與檔案
1.基於控制台的輸入輸出 iostream cin,cout,cerr,clog,cout.put 字元輸出,cout.write 無格式的輸出和格式化的輸出,cin.get,cin.getline 字元和字串的輸入,cin.read 無格式的輸入和格式化的輸入 read。write主要用於檔案訪問...