王雪
摘要:文章針對高職物聯(lián)網(wǎng)學(xué)生的特點,對嵌入式系統(tǒng)課程中斷內(nèi)容的授課方案進(jìn)行教學(xué)設(shè)計,指出了中斷部分內(nèi)容的重要性,介紹了中斷優(yōu)先級相關(guān)的重點講解內(nèi)容,并采用項目式教學(xué)的方式,帶領(lǐng)學(xué)生進(jìn)行實踐操作,并設(shè)計了實驗過程和代碼。
關(guān)鍵詞:ARM;中斷;優(yōu)先級
1 背景
中斷[1]是嵌入式系統(tǒng)中重要的概念,幾乎所有的應(yīng)用系統(tǒng)中都用到中斷,中斷系統(tǒng)體系相對復(fù)雜,涉及內(nèi)核,編程和硬件連接多個方面,對于高職層面學(xué)生來說,如何整合好課程內(nèi)容,如何策略性的講授課程,對學(xué)生的接受程度有著重要的影響。
2 概念講解
概念和體系結(jié)構(gòu)[2]的理解是學(xué)習(xí)中斷的理論基礎(chǔ),主要包括中斷,優(yōu)先級兩個重要概念。在上課過程中,采用舉例的方式效果比較好。例如:在教師上課過程中,有一個學(xué)生遲到了,在敲門進(jìn)入教室的過程中,打斷了教師的講課,就是所謂的“中斷”。在教師處理遲到學(xué)生的過程中,突然有一個學(xué)生生病了,又產(chǎn)生了一個新的中斷。教師會先處理生病的學(xué)生,然后再處理遲到的同學(xué),這就是中斷的優(yōu)先級[2]。在舉例過程中,帶出了中斷概念優(yōu)先級的概念,并詳細(xì)講解優(yōu)先級方面的詳細(xì)知識。首先要從宏觀上講解中斷基礎(chǔ)知識[3]。
(1)在CM3的體系結(jié)構(gòu)中,共計設(shè)有256個中斷,中斷分為內(nèi)核中斷和外部中斷,數(shù)量分別為16和240個。對于每一個中斷,均可設(shè)置相關(guān)優(yōu)先級,故CM3可以控制256級中斷設(shè)置。(2)STM32作為意法半導(dǎo)體公司針對CM3訂制的芯片,根據(jù)應(yīng)用市場需要,并沒有全部使用CM3內(nèi)核,有選擇性地采用了一部分。(3)在STM32體系中,一共設(shè)置了84個中斷,同樣分為外部中斷和內(nèi)部中斷,分別為16和68個,中斷優(yōu)先級分級處理,共有16個等級。(4)在STM32F103系列中,設(shè)置了60個外部中斷,同時也是可屏蔽中斷。
中斷的優(yōu)先級是一個重要的概念,如表1所示。
在ARM中斷系統(tǒng)中,搶占優(yōu)先級和響應(yīng)優(yōu)先級是有區(qū)別的,講解過程具體如下:(1)高優(yōu)先級的搶占優(yōu)先級是可以打斷正在進(jìn)行的低搶占優(yōu)先級中斷的。(2)搶占優(yōu)先級相同的中斷,高響應(yīng)優(yōu)先級不可以打斷低響應(yīng)優(yōu)先級的中斷。(3)搶占優(yōu)先級相同的中斷,當(dāng)兩個中斷同時發(fā)生的情況下,哪個響應(yīng)優(yōu)先級高,哪個先執(zhí)行。(4)如果兩個中斷的搶占優(yōu)先級和響應(yīng)優(yōu)先級都是一樣,則看哪個中斷先發(fā)生就先執(zhí)行;
3 實驗過程
3.1 GPIO 口初始化操作
GPIO 口在進(jìn)行輸出前,要進(jìn)行相關(guān)寄存器的配置,主要配置內(nèi)容包括輸入輸出狀態(tài)設(shè)置、上拉下拉設(shè)置、復(fù)用和重映射設(shè)置等。一般可以設(shè)為內(nèi)部上拉或者內(nèi)部下拉,如果不采用,一般需要在外部設(shè)置上拉電阻或者下拉電阻。否則中斷會不停地發(fā)生。
3.2 GPIO復(fù)用功能設(shè)置
復(fù)用是單片機(jī)里面一個非常重要的技術(shù),解決了CPU管腳不夠用的問題,也使開發(fā)設(shè)計靈活性更好。在復(fù)用前,要開啟相關(guān)外圍器件的時鐘功能,同時開啟相關(guān)GPIO引腳的時鐘功能,再進(jìn)行利用設(shè)置,從而建立復(fù)用引腳與相關(guān)外圍器件的對應(yīng)關(guān)系。
3.3 中斷設(shè)置
中斷的產(chǎn)生需要幾個條件。(1)相關(guān)器件的中斷允許。(2)中斷服務(wù)函數(shù)的編寫。(3)中斷優(yōu)先級的設(shè)置。(4)上升沿或者下降沿觸發(fā)。(5)NVIC所對應(yīng)的中斷入口函數(shù)名稱。(6)中斷向量表。(7)中斷號的查詢。這些條件都是需要進(jìn)行設(shè)置的,否則將無法正確進(jìn)行中斷處理。
3.4 配置中斷分組,并使能中斷
這一步,就是配置中斷的分組(Nested Vectored Interrupt Controller, NVIC),以及使能,對 STM32 的中斷來說,只有配置了 NVIC的設(shè)置,并開啟才能被執(zhí)行,否則是不會執(zhí)行到中斷服務(wù)函數(shù)里面去的。
3.5 編寫中斷服務(wù)函數(shù)
中斷服務(wù)函數(shù)的名稱在STM32中在中斷向量表中已經(jīng)定義好了,不能隨便更改名稱,在STM32的啟動文件當(dāng)中可以找到相關(guān)的名稱。例如:
DCD EXTIOJRQHandler ;外部中斷0
DCD EXTIl-IRQHandler;外部中斷 1
DCD EXTI2-IRQHandler;外部中斷2
DCD EXTI3-IRQHandler;外部中斷3
DCD EXTI4-IRQHandler;外部中斷4
DCD EXTI9-5-IRQHandler;;外部中斷5-9
DCD EXTI15-r。-IRQHandler;;外部中斷 10-15
需要特別注意的是,中斷5—9共用同一個中斷入口函數(shù)。中斷10—15共用同一個中斷入口函數(shù)。在一般情況下,我們通常會使用外部中斷0—4。通過以上幾個步驟的設(shè)置,我們就可以正常使用外部中斷了。
4 軟件設(shè)計
我們在inter.c里輸入如下代碼:
5 下載驗證
通過MDK開發(fā)環(huán)境對工程進(jìn)行編譯,無誤后,可以下載代碼至實驗板上運(yùn)行,以驗證是否正確。下載代碼后,在串口調(diào)試助手里面可以看到,實驗效果如圖1所示。
6 結(jié)語
本著“以學(xué)生為中心”的理念,在教學(xué)過程中,對教學(xué)內(nèi)容的選擇和提煉是非常重要的教學(xué)環(huán)節(jié)。教師要站在學(xué)生的角度上,全方位參考學(xué)生的基礎(chǔ)知識、學(xué)習(xí)狀態(tài)、接受能力和興趣愛好,制定出適合學(xué)生學(xué),適合教師教,適合社會用的教學(xué)實施方案,并注重知識的融會貫通,真正讓學(xué)生學(xué)有所用,為將來的就業(yè)打好基礎(chǔ)。
[參考文獻(xiàn)]
[1]王超,朱鵬遠(yuǎn).基于Proteus的單片機(jī)中斷電路的設(shè)計與仿真[J].實驗技術(shù)與管理,2017(7):136.
[2]劉維梁,任長明.中斷向量表在ARM異常中斷中的應(yīng)用[J].微處理機(jī),2008(4):5.
[3]劉嵐,張凱.ARM7嵌入式系統(tǒng)的中斷設(shè)計與中斷處理優(yōu)化[J].武漢理工大學(xué)學(xué)報,2004(4):88.