本章節首先將以MCU開發人員常接觸到的“中斷”、“事件”和“中斷事件”三個名詞的概念展開,然后去闡述彼此的主要區別,最后借助MCU的GPIO外部中斷/事件控制器(EXTI)的傳輸路徑來加深對上述概念的理解。
概念簡介
中斷
為了具化下述概念,特引用MCU運行過程中外設模塊的觸發和反饋來解釋說明。
MCU執行程序時,由于發生了某種特定的事件(外部或內部),引起MCU暫時中斷正在運行的程序,轉去執行與該事件相關的中斷服務程序,該事件處理完后又返回被中斷的程序繼續執行,這一過程稱之為中斷或中斷響應。
事件
事件是指CKS32F107xx系統中發生的一些特定的狀態變化,譬如:外部輸入電平變化、定時器溢出、FIFO非空、串口接收/發送數據、AD轉換完成、外設使能、初始化等。而事件與中斷事件是包含關系,即事件可分為中斷事件或非中斷事件。比如AD轉換并不會導致中斷發生,因而歸類為非中斷事件,但AD轉換結束就是一個中斷事件。
中斷事件
中斷事件,顧名思義是指能導致中斷發生的事件。值得注意的是中斷事件最終是否導致后續中斷的正常觸發,還需要確保是否開啟了該中斷事件的中斷使能。
中斷與事件的主要區別
(1)中斷與中斷事件屬于前后關聯的因果關系,二者在時序和行為上不一樣,即中斷事件是中斷的觸發源;
(2)事件與中斷事件為包含關系;
(3)中斷有可能被更高優先級的中斷屏蔽,但事件不會;
(4)中斷一定要有中斷服務函數,但是事件沒有;
(5)中斷一定要MCU的介入,但事件執行操作,可以不需要MCU干預;
(6)中斷是軟件級的操作,而事件是硬件級。
外部中斷/事件控制器(EXTI)
對于互聯型產品CKS32F107xx系列的EXTI,它支持20個軟件的事件/中斷請求,且每個中斷/事件都有獨立的觸發和屏蔽,每個中斷線都有專用的狀態位。下圖為GPIO的EXTI的框圖,同時也是外部中斷線或外部事件線的示意圖。
圖1 中斷/事件線示意圖
從上文可知曉,一個能夠觸發中斷的事件在觸發配置時就出現兩種可能,即允許產生中斷或禁止產生中斷,這隨之引出事件模式和中斷模式兩個概念。從上圖不難看出,每根信號線上劃有一條斜線,并標注數字20,表明這樣的線路共有20條,圖中的藍色虛線箭頭,標出了中斷模式下的傳輸路徑,而圖中的綠色箭頭則標識了事件模式下的傳輸路徑,下文一一說明。
1)中斷模式下的傳輸路徑(①-②-③-④-⑤)
①輸入線:EXTI控制器具有20個中斷/事件輸入線,這些輸入線可以連接到任意一個 GPIO或一些外設的事件,當這些輸入線上的信號發生電平變化時,EXTI控制器會檢測到并觸發中斷或事件。
②邊沿檢測電路:EXTI控制器允許用戶選擇觸發方式,可通過設置上升沿、下降沿觸發選擇寄存器中相應的位來控制信號的觸發。
③或門電路:一端輸入信號線由邊沿檢測電路提供,另一端由軟件中斷事件寄存器(可以使用軟件來啟動中斷/事件線)提供,此處軟件可以優先于外部信號請求一個中斷或事件,即當軟件中斷事件寄存器的對應位為”1”時,不管外部信號如何,則輸出有效信號1,并且輸出的信號會被保存到請求掛起寄存器內,當電路輸出為1就會把請求掛起寄存器對應位置1。
④與門電路:一端由或門電路的輸出提供,另一端由中斷屏蔽寄存器提供,只有當兩者都為有效信號1,才會輸出有效信號1,即向NVIC中斷控制器發出一個中斷請求。
⑤將請求掛起寄存器的內容輸入到NVIC中,從而實現對中斷事件的控制。
2)事件模式下的傳輸路徑(①-②-③-⑥-⑦-⑧)
⑥與門電路:此處與門電路與標號④與門電路類似,用于引入事件屏蔽寄存器的控制,只有兩個均輸入有效電平1時,才會輸出有效信號1。
⑦脈沖發生器:當標號⑥與門電路輸出有效信號1時,脈沖發生器會輸出一個脈沖信號。
⑧脈沖信號:由脈沖發生器產生,通常用于觸發定時器、ADC等。
綜上所述,從外部激勵源來看,無論中斷模式還是事件模式的傳輸路徑在標識①~③是一致的,主要區別是中斷需要MCU介入,且同時需要有中斷處理函數的參與才會形成中斷后的結果,但事件是通過脈沖發生器發出的脈沖信號,進而由硬件自行完成該事件并產生響應的結果。所以,從節省MCU開銷,提高系統運行效率來看,事件模式不失為一種提高MCU處理能力的快速響應機制。
-
mcu
+關注
關注
146文章
17199瀏覽量
351912 -
控制器
+關注
關注
112文章
16416瀏覽量
178751 -
中斷
+關注
關注
5文章
900瀏覽量
41588 -
GPIO
+關注
關注
16文章
1215瀏覽量
52223
原文標題:MCU微課堂|CKS32F107xx系列中斷和事件
文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論