田德永
【關鍵詞】STM32;中斷;教學
高職院校很多電子信息競賽的項目中,如嵌入式技術應用、電子設計競賽等比賽項目都涉及到基于STM32芯片的嵌入式技術開發(fā),所以大多高職院校采用芯片STM32作為嵌入式課程教學內容。中斷技術是STM32核心技術之一,中斷的知識是課程教學的難點和重點內容,也是學生不容易學習和理解的知識點。對于基礎薄弱的高職學生,如何對STM32的中斷知識點進行有效教學,是任課老師需要思索探討的問題。
(一)中斷概念的理解。
對于生活中的中斷現(xiàn)象,其實大部分學生還是比較容易理解,應該明白中斷的意思。在進行教學時,我們可以從生活中引入例子來進行對比,讓學生更加容易理解中斷的概念。比如一位同學正在看書時,突然老師打來了電話,這位同學可能會停止看書,去接老師的電話,接完后再來看書。這個過程就是中斷??梢钥闯?,現(xiàn)實中的中斷就是正在進行的工作。由于外部原因被打斷了。通常說的STM32的中斷,其實也就是STM32中內部的CPU中斷。針對于CPU來說,中斷就是CPU在執(zhí)行當前的程序。由于有外部某種事件的發(fā)生,CPU不得不停止當前程序的執(zhí)行,而去處理另外一段特殊的中斷服務程序的這一過程。一般的嵌入式芯片都具有中斷技術,只不過其中的控制機制和復雜程度不一樣。為什么采用中斷技術,從中斷概念我們就會發(fā)現(xiàn)中斷技術的優(yōu)勢和作用很大。其中一個作用是可以進行分時操作,可以掛載多個外設,匹配外設的速度。另外一個作用是能實時處理,就是當有隨機事件來時,能及時響應,提高了CPUI作的效率,滿足一些實時任務要求。
(二)STM32中斷的機制
STM32中斷系統(tǒng)相對于普通51單片機要復雜得多,但功能和性能也比51單片機強得多。學生往往容易掌握中斷的概念,但到具體操作上,卻難以理清頭緒,因此需要初步理解STM32中斷機制。對于有許多中斷源的STM32來說,中斷地管理是采取分組的方法來進行的。STM32設置中斷優(yōu)先級的取內核給的4個字節(jié)位,分成五個分組。其中每個分組對應設置一個搶占優(yōu)先級和一個響應優(yōu)先級。在進行初始化時,我們就對分組進行配置。在外部中斷時,只要確定了中斷通道的優(yōu)先級。也就確定了外部設備的中斷優(yōu)先級。一般情況下,搶占優(yōu)先級地值越低,優(yōu)先級則越高。系統(tǒng)首先響應優(yōu)先級最高的中斷。如果兩個中斷的優(yōu)先級都一致,則優(yōu)先執(zhí)行位于中斷向量表中位置較高的中斷。
(三)中斷實驗教學實例
STM32中斷有外部中斷、定時器中斷、串口中斷等中斷內容教學,本文通過采用外部中斷的實驗例子進行中斷內容的教學分析。重點要求學生學會STM32中斷的配置及中斷服務函數(shù)的編寫。掌握基于庫函數(shù)的外部中斷的程序編寫步驟。中斷服務函數(shù)與子函數(shù)有不少相似之處,兩者都和普通函數(shù)一樣的格式和要求,都可實現(xiàn)嵌套。學生往往會忽視中斷函數(shù)與子函數(shù)區(qū)別,容易混淆它們作用。如果把子函數(shù)放在主程序的大循環(huán)里調用,那么CPU就一直反復執(zhí)行這子函數(shù)。而中斷函數(shù)并未寫在主函數(shù)里。學生會誤以為中斷函數(shù)永遠不會執(zhí)行,其實他們是有非常大的區(qū)別,中斷函數(shù)一般具有特定的函數(shù)名,在發(fā)生中斷過程時中斷服務函數(shù)就可能被調用。
由于是外部中斷,經過IO口的STM32外部中斷源,STM32采取了中斷線的概念。STM32的lO口與外部中斷形成映射關系,構成一個個中斷通道。但STM32提供lO能使用的中斷線只有16個,為了解決每個10口都能使用中斷線,STM32是采用分組方式,每個端口IO引腳序號一致地為一組,對應一根中斷線。對于初次接觸中斷的高職學生來說,比較容易理解的是外部按鍵中斷控制實驗,所以具體實驗是要求學生通過按鍵中斷的方式,控制LCDl602顯示正確的按鍵。學生編輯相關歷程程序,通過搭建仿真電路觀察實驗效果,來理解STM32的中斷機制。
(四)STM32中斷教學的實施
1、采用的工具
Proteus是一款功能強大的仿真工具,前期版本只能仿真51、AVR等單片機,現(xiàn)在高版本可以對STM32部分系列進行仿真,為了能方便觀察到實驗效果。采用仿真工具Proteus進行仿真使得STM32教學效率大大提高。學生需要掌握這個工具,在沒有硬件資源的條件下,學生可以通過自己的電腦在課余時間進行仿真學習,提高學習興趣以及提高對嵌入式設計編程的能力。在進行STM32按鍵中斷的實驗中,學生需要繪制的硬件原理圖不復雜,但也存在一些問題。學生對電路的基本知識掌握不夠扎實,遇到一些元件符號不能識別,不會修改元件參數(shù)值,在仿真的時候得不到實驗效果。另外部分學生動手能力不強,也缺乏進取之心,遇見到密集的連線和元件產生畏難情緒,就放棄了使用和學習。為了提高學生學習興趣和直觀的圖形顯示,采用Proteus里的LCDl602模塊進行實驗結果的顯示,在教學中通過示范來指導學生繪制電路圖。
STM32芯片運行需要的文件是.HEX文件,通常我們采用的是C語言進行編寫源代碼的,KEIL軟件是我們采取的理想編譯軟件之一。一般要讓學生知道KEIL的配置。比如生成的HEX文件目錄在什么地方,在進行仿真學習或者下載到硬件中時,學生才能找到HEX文件。意法半導體為STM32提供了一系列C語言的STM32操作的庫函數(shù)。也提供了程序開發(fā)模板歷程,在進行開發(fā)實驗時,我們只需要使用KEIL軟件打開提供的歷程進行二次開發(fā)就可以。
2、中斷控制的按鍵程序編寫教學
一般給的歷程里,文件和文件目錄比較復雜,學生短時間內難以著手,不知從哪里開始編寫代碼。我們可以把本例按鍵中斷控制程序分成幾個模塊來進行設計,把相關組件程序代碼寫在不同文件里??梢园芽偟哪K分成顯示程序文件、按鍵程序文件、中斷配置程序文件、中斷服務程序文件、主程序文件。顯示程序里的具體細節(jié),學生不必去深究,教師已經編輯并調試好,通過調用顯示函數(shù)能正常顯示,學生只需會調用顯示函數(shù)即可。因此教師在進行教學時,重點講解中斷配置程序文件和中斷服務程序文件。中斷配置程序文件中的代碼作用一是需要對中斷源進行配置,二是將中斷映射到相應中斷線,三是設置中斷分組及中斷方式。對于代碼,STM32提供了豐富的庫函數(shù),調用相應庫函數(shù)即可進行配置。一般庫函數(shù)名前大寫字母,表示的是對應的STM32功能模塊,比如函數(shù)名為GPIO開頭的。一般就是對普通輸入輸出口進程操作的函數(shù),EXTI開頭庫的即是外部中斷相關操作函數(shù)。在STM32F10X_lT.C文件里我們會發(fā)現(xiàn)中斷服務函數(shù),并且對應函數(shù)名已經定義完成,它是與中斷向量一一對應的。我們打開這個文件,找到對應的中斷服務函數(shù),在此函數(shù)體里寫上按鍵檢測代碼,以便檢測出是哪個按鍵。同時為了顯示按鍵,也需要在此函數(shù)調用顯示函數(shù)。顯示函數(shù)是外部函數(shù),因此需要把頭文件包括進來。STM32具體中斷過程是這樣的,當按鍵按下時,觸發(fā)中斷,即產生中斷源請求。那么CPU轉而執(zhí)行對應的外部中斷服務函數(shù),及時顯示按鍵值。
STM32中斷控制系統(tǒng)比較豐富,也比較難以理解。通過一般課程的教學,只是引導學生初步了解中斷概念,掌握中斷相關配置及其簡單應用。如果要進一步深入掌握STM32中斷控制機制,靈活運用STM32進行相關嵌入式開發(fā),對于高職院校學生來說,需要在老師的指導下利用課余時間或者翻轉課堂不斷進行實驗和探索。