STM32之中斷與事件

轉載自:https://blog.csdn.net/flydream0/article/details/8208463

1.中斷與事件框架

這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號線上劃有一條斜線,旁邊標誌19字樣的註釋,表示這樣的線路共有19套.圖中的藍色虛線箭頭,標出了外部中斷信號的傳輸路徑

1.1 中斷路徑

  • 中斷總體流程

首先外部信號從編號1的芯片管腳進入->經過編號2的邊沿檢測電路->通過編號3的或門進入中斷掛起請求寄存器->最後經過編號4的與門輸出到NVIC中斷檢測電路。

  • 邊沿檢測電路

受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個寄存器控制需要哪一個邊沿產生中斷,因爲選擇上升沿或下降沿是分別受2個平行的寄存器控制,所以用戶可以同時選擇上升沿或下降沿,而如果只有一個寄存器控制,那麼只能選擇一個邊沿了。

  • 編號3的或門

這個或門的另一個輸入是軟件中斷/事件寄存器,從這裏可以看出,軟件可以優先於外部信號請求一箇中斷或事件,即當軟件中斷/事件寄存器的對應位爲"1"時,不管外部信號如何,編號3的或門都會輸出有效信號。

  • 掛起請求寄存器

一箇中斷或事件請求信號經過編號3的或門後,進入掛起請求寄存器,到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說,掛起請求寄存器中記錄了外部信號的電平變化。

  • 編號4的與門

外部請求信號最後經過編號4的與門,向NVIC中斷控制器發出一箇中斷請求,如果中斷屏蔽寄存器的對應位爲"0",則該請求信號不能傳輸到與門的另一端,實現了中斷的屏蔽。

1.2 事件路徑

  • 事件總體流程

明白了外部中斷的請求機制,就很容易理解事件的請求機制了。圖中紅色虛線箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經過編號3的或門後,進入編號5的與門,這個與門的作用與編號4的與門類似,用於引入事件屏蔽寄存器的控制;最後脈衝發生器的一個跳變的信號轉變爲一個單脈衝,輸出到芯片中的其它功能模塊。

1.3 中斷與事件的比較

從這張圖上我們也可以知道,從外部激勵信號來看,中斷和事件的產生源都可以是一樣的.之所以分成2個部分,由於中斷是需要CPU參與的,需要軟件的中斷服務函數才能完成中斷後產生的結果;

但是事件,是靠脈衝發生器產生一個脈衝,進而由硬件自動完成這個事件產生的結果,當然相應的聯動部件需要先設置好,比如引起DMA操作,AD轉換等;

簡單舉例:外部I/O觸發AD轉換,來測量外部物品的重量;如果使用傳統的中斷通道,需要I/O觸發產生外部中斷,外部中斷服務程序啓動AD轉換,AD轉換完成中斷服務程序提交最後結果;

要是使用事件通道,I/O觸發產生事件,然後聯動觸發AD轉換,AD轉換完成中斷服務程序提交最後結果;相比之下,後者不要軟件參與AD觸發,並且響應速度也更塊;

要是使用事件觸發DMA操作,就完全不用軟件參與就可以完成某些聯動任務了。

2.總結

可以這樣簡單的認爲,事件機制提供了一個完全有硬件自動完成的觸發到產生結果的通道,不要軟件的參與,降低了CPU的負荷,節省了中斷資源,提高了響應速度(硬件總快於軟件),是利用硬件來提升CPU芯片處理事件能力的一個有效方法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章