stm32異常 中斷和事件的區別

2021-09-26 07:58:05 字數 1651 閱讀 1484

中斷和異常的區別

中斷是指系統停止當前正在執行的程式轉到其他的服務,可能是程式接收了比自身高優先順序的請求,或者是人為設定中斷,中斷是屬於正常現象

異常是指由於cpu本身故障、程式故障或者請求服務等引起的錯誤,異常屬於不正常現象。

cortex-m3核心總共支援256個中斷,其中包含16個核心異常和240個外部中斷,但是各個晶元產商在設計晶元的時候會對cm3核心的晶元進行精簡設計,如stm32f103系列,所搭載的異常響應系統,包含10個系統異常和60個外部中斷,用一張表將它們管理起來,編號0~15為系統異常(優先順序為-3到6),16以上稱為外部中斷。

系統異常清單:

比較常見的異常就是hardfault異常了,可以看到他的優先順序被設定為了-1,而且是不允許使用者修改的。

外部中斷清單:

外部中斷訊號從核外發出訊號最終要傳遞到nvic(巢狀向量中斷控制器)nvic跟核心緊密耦合,它控制著整個晶元中斷的相關功能。

中斷優先順序

stm32支援兩種優先順序:搶占優先順序和子優先順序。所有優先順序可程式設計的中斷源都需要指定這兩種優先順序。搶占優先順序決定是否可以產生中斷巢狀,子優先順序決定中斷響應順序,若兩種優先順序一樣則看中斷源在中斷向量表中的偏移量,偏移量小的先響應。

對這句話的解釋為:

搶占優先順序高的中斷源可以中斷搶占優先順序低的中斷處理函式,進而執行高優先順序的中斷處理函式,執行完畢後再繼續執行被中斷的低優先順序的處理函式。

當兩個中斷源的搶占優先順序相同時,即這兩個中斷將沒有巢狀關係,當乙個中斷到來後,若此時cpu正在處理另乙個中斷,則這個後到來的中斷就要等到前乙個中斷處理函式處理完畢後才能被處理當這兩個中斷同時到達,則中斷控制器會根據它們的子優先順序決定先處理哪個

如果兩個中斷的優先順序都設定為一樣了,那麼誰先觸發的就誰先執行;如果是同時觸發的,那麼就根據中斷向量表的位置來決定誰先執行。

中斷和事件的區別

產生中斷線路目的是把輸入訊號輸入到nvic進一步會執行中斷服務函式,實現功能,這樣是軟體級的。而產生事件線路目的就是傳輸乙個脈衝訊號給其他外設使用,並且是電路級別的訊號傳輸,屬於硬體級的

簡單點來說,就是中斷最終會自動進入中斷服務函式,而事件則不會有對應的服務函式。中斷是軟體級的,而事件是硬體級的。

STM32中異常 中斷 事件辨析

參考 cortex m3權威指南 中文 stm32參考手冊中文版 第10版 原話 cortex m3 在核心水平上搭載了乙個異常響應系統,支援為數眾多的系統異常和外部中斷。其中,編號為 1 15 的對應系統異常,大於等於 16 的則全是外部中斷。除了個別異常的優先順序被定死外,其它異常的優先順序都是...

STM32之中斷和異常

1 stm32的所有gpio都可以用作外部中斷源的輸入端,用來捕捉外部訊號,可以配置為下降沿中斷 上公升沿中斷和上公升下降沿中斷三種模式。2 cortex核心具有很強大的異常響應系統,它把能夠打斷當前 執行流程的時間分為異常 exception 和中斷 interrupt 並把它們用乙個表管理起來,...

stm32之事件與中斷區別

事件是中斷的觸發源,開放了對應的中斷遮蔽位,則事件可以觸發相應的中斷。事件還是其它一些操作的觸發源,比如dma,還有tim中影子暫存器的傳遞與更新 簡單點就是中斷一定要有中斷服務函式,但是事件卻沒有對應的函式.但是事件可以觸發其他關聯操作,比如觸發dma,觸發adc取樣等.可以在不需要cpu干預的情...