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