1. 程式人生 > >STM32中斷與事件的區別

STM32中斷與事件的區別

中斷和事件的產生源都可以是一樣的! 
之所以分成2個部分,由於中斷是需要CPU參與的,需要軟體的中斷服務函式才能完成中斷後產生的結果; 
但是事件,是靠脈衝發生器產生一個脈衝,進而由硬體自動完成這個事件產生的結果,當然相應的聯動部件需要先設定好,比如引起DMA操作,AD轉換等; 
簡單舉例:外部I/O觸發AD轉換,來測量外部物品的重量; 
如果使用傳統的中斷通道,需要I/O觸發產生外部中斷,外部中斷服務程式啟動AD轉換,AD轉換完成中斷服務程式提交最後結果; 
要是使用事件通道,I/O觸發產生事件,然後聯動觸發AD轉換,AD轉換完成中斷服務程式提交最後結果; 
相比之下,後者不要軟體參與AD觸發,並且響應速度也更塊; 

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

2  事件與中斷
事件:是表示檢測到某一動作(電平邊沿)觸發事件發生了。
中斷:有某個事件發生併產生中斷,並跳轉到對應的中斷處理程式中。
事件可以觸發中斷,也可以不觸發
中斷有可能被更優先的中斷遮蔽,事件不會

事件本質上就是一個觸發訊號,是用來觸發特定的外設模組或核心本身(喚醒).
事件只是一個觸發訊號(脈衝),而中斷則是一個固定的電平訊號



通過上圖的表示,可以明顯看出,藍色是中斷髮生,紅色是事件發生,從一到三兩者線路是相同的,然後兩者分開,上升沿和下降沿用來選擇電平方式,中斷和事件遮蔽暫存器起到相應的開關作用,軟體中斷/事件暫存器只要為1對後面的線路都有作用,掛起請求暫存器主要記錄電平變化!