嵌入式中斷的理解

一、什麼叫中斷
先來個概念文字定義
中斷:指當出現需要時,CPU暫時停止當前程序的執行轉而執行處理新情況的程序和執行過程。

           即在程序運行過程中,系統出現了一個必須由CPU立即處理的情況,此時,CPU暫時中止程序的執行轉而處理這個新的情況的過程就叫做中斷。


中斷在嵌入式系統中使用得十分廣泛,可以說幾乎離不開它,可想而知中斷的功能有多麼的重要,其實籠統地說中斷只是一個概念,真正重要的是如何去應用,單片機的中斷是最簡單的中斷,通過理解51單片機的中斷概念,以後做其他嵌入式時只需要理解如何設計進入中斷就可以了。

二、關於單片機中斷的理解

    

       常用的中斷一般是定時中斷,外部中斷, 串口中斷。

       單片機是一種單流程控制的系統,從main開始在while循環輪詢,假如一個系統沒有中斷的功能,那麼當運行中的系統需要馬上處理一些事情時就只能等待單片機當次輪詢結束後再次輪詢到纔有可能,這明顯是不符合現實需求的,想象當現在發生火災,本來觸發中斷後,馬上就噴水滅火,但是由沒有中斷功能要等到系統跑一輪後再來詢問,這時可能已經由於大火高溫等因素把器件燒壞,不能進行灑水觸發工作了,這時就算檢測到火災又有什麼用。所以中斷對於一個嵌入式系統來說是非常重要的。

書中對單片機帶中斷觸發的控制流程是這樣的

從圖中可以看到,當觸發控制完了以後還是要回到原先的工作接着做原先的事情的。
比喻爲現在中的工作流程是怎樣的呢?請看下面

可能看完這兩張圖大家還是雲裏霧裏的不懂中斷,再舉個程序的例子說說
假設現在主程序正在執行跑馬燈時觸發中斷了,程序跑到了第3個燈,這時單片機會怎麼做
先保存當前設置,然後進入中斷程序執行代碼比如是令數碼管顯示1,然後回到主程序接着之前的狀態

繼續往下運行,也就是說這時會電路第4個燈一直跑,而這時在中斷程序執行時數碼管顯示的1在主程序不再對他進行改變時也是保持顯示的。



注意再次強調:中斷的開啓與設定可以看成是鬧鐘的設定,當中斷不觸發的時候,主程序可以看成是根本就沒有這回事,不用管,中斷可以看成是一段同時運行的監督提醒程序。

三、關於中斷嵌套
看到網上很多人都問中斷可以嵌套嗎?實際應用有用到嗎?
我可以告訴大家,中斷是可以嵌套的,中斷有優先級之分,每一款嵌入式都有中斷向量表,高優先級打斷低優先級,太多的解析就不寫了,不過我可以給大家舉個例子,如果大家懂得單片機的話,應該知道復位也是一箇中斷,當大家程序跑進中斷執行時,我按下復位按鍵進行復位中斷,程序是響應的會進行復位重新開始,注意這是第一次中斷未完成時的二次中斷,所以也就是典型的中斷嵌套例子了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章