





摘 要:針對STM32嵌入式應用技術課程實踐環節薄弱、綜合性與應用性很強的特點,梳理分析了該課程教學過程中存在的突出問題;合理借鑒職業技能大賽的理念和標準,以“課賽融通、訓賽結合、學以致用、學用相長”為主線,優化設計教學內容;引入虛擬仿真軟件Proteus,結合ARM-MDK編程環境,以交通信號燈運行系統為實際案例,闡述了以32位主控器STM32F103C8T6為核心的硬件設計思路與軟件設計思想;借助邏輯分析儀觀察信號波形變化,直觀、可視、形象地完成設計仿真與程序調試。經過實踐教學表明,虛擬仿真軟件能夠模擬真實實驗的操作過程,實現了理論知識與實踐操作的有機無縫融合,有利于培養學生運用專業技能設計復雜嵌入式應用系統的工程應用能力與創新思維能力,對職業院校相關課程的實踐性教學具有借鑒意義。
關鍵詞:嵌入式應用技術;Proteus;虛擬仿真;交通信號燈;ARM-MDK;STM32;邏輯分析儀
中圖分類號:TP273 文獻標識碼:A 文章編號:2095-1302(2024)07-0-05
0 引 言
隨著電子技術、計算機應用以及互聯網技術的不斷深化、擴展,嵌入式系統被廣泛應用于工業控制、消費電子、醫療設備、物聯網設備、安防監控等諸多領域[1-2],嵌入式應用技術成為新技術發展的熱點,這必將引發相關學科教學模式的改革。實踐教學是高等職業教育院校培養高技能型技術人才必備的重要環節,用以鞏固學生所學理論知識,培養學生的創新意識、創新能力、實踐技能,這也意味著“雙師型”教師應依據職業崗位(群)的能力要求,突出人才應用能力和創新素質的培養,合理設置與崗位能力課程相適應的典型案例任務[3]。傳統的實踐性教學方式受實驗室時間和空間的約束,并不能滿足學生實時、實地實驗的需求,而虛擬仿真技術[4-6]作為一項創新的技術手段和方法,模擬真實實驗的操作過程,提供具有真實性和可操作性的實驗體驗,使學生能夠在虛擬環境中進行實驗操作、數據采集和結果分析。這也是推進現代信息化技術融入實驗教學項目、拓展實驗教學內容廣度和深度、延伸實驗教學時間和空間、提升實驗教學質量和水平的重要舉措,以軟件模擬和虛擬交互的方式,使學生能夠在計算機上進行實驗操作和實驗學習,是克服實驗室開展實驗項目困難的重要途徑,此舉不受實驗場地空間約束,能夠有效縮短實驗時間,彌補傳統的實踐性教學的不足,仿真、調試的容錯性也有利于幫助學生在實驗中獲得更多的收益。
1 教學現狀
STM32嵌入式應用技術是電子信息大類(包括電子信息類、計算機類、通信類)和自動化類等專業開設的專業核心課程,也是一門實踐性很強的課程,課程以理論教學與實驗教學并重的方式,培養學生嵌入式技術方面的軟硬件設計能力,意在為后續課程奠定堅實的嵌入式技術基礎,為社會培養具備嵌入式智能產品設計、分析、調試與創新能力的高素質技術技能型人才。
從目前的教學現狀來看,主要存在的問題如下[7-9]。
(1)教學方法單一,缺乏工程應用能力
STM32嵌入式應用技術是一門多學科交叉融合的課程,涉及C語言程序設計、電路分析、模擬電子技術、數字電子技術、MCS51單片機應用技術、傳感器檢測及應用技術、自動控制系統等多個學科領域,目前國內大多高等職業院校以“填鴨式”或“滿堂灌”的理論教授為主,學生前導課程基礎知識掌握不扎實,講授的STM32外設寄存器的說明和配置,或者庫函數的調用和傳參等基礎理論知識晦澀難懂、枯燥乏味,沒有實際的典型應用案例來詳細闡述具體使用方法和配置差別,學生難以清楚理解其中的差異,這就需要依據不同的應用場景加以解釋說明。該課程實踐性、綜合性、應用性都比較強,但現有教學方法單一,課程學時較少,缺少工程應用方面的內容,不適合學生理解、掌握以及熟練運用,也無法滿足創新型技能人才的崗位需求。
(2)學習動機匱乏,缺乏解決問題的能力
STM32嵌入式應用技術的主要內容有硬件原理圖識圖和設計、處理器底層硬件配置和使用、程序頂層邏輯分析和處理、實際應用邏輯功能驗證與改進。但現有實驗箱或開發板的硬件連接固定,主要以驗證性實驗居多,機械式地照抄或照搬講授演示的步驟,實踐教學中實驗過程程式化、實驗內容刻板化,學生相互抄襲或敷衍了事的態度難以提高學生的學習興趣和主觀能動性;缺少綜合設計型實驗,不能充分理解處理器底層硬件配置和使用的細節、程序頂層邏輯分析和處理的思路,學生學習動機不足,嚴重缺乏在工程應用中解決問題的能力。
(3)考核形式簡單,缺乏創新思維能力
STM32嵌入式應用技術是一門典型的理論性、實踐性和綜合性都很強的課程,作為一項工程性應用開發技術,其具有硬件組成標準化、軟件實現多樣化等特點。硬件組成的標準化降低了硬件設計的難度;軟件實現的多樣性提高了軟件設計的復雜度。一個嵌入式系統的設計需要軟硬兼顧、協同考慮,若依靠課堂講授、程序解讀、操作演示等模式,則實驗的挑戰性不足,難以訓練學生發現問題、分析問題和解決問題的能力,其考核的過程環節、實驗考核和實驗報告等評價方式,不能客觀、真實、有效地反映學生實際的知識掌握程度,教學中也缺少了學生獨立思考的過程。考核評價形式過于簡單粗糙,學生無法綜合應用掌握的技能設計復雜的嵌入式應用系統,更無法提升學生的自主實驗及創新思維能力。
2 虛擬仿真實驗教學內容設計
STM32嵌入式應用技術課程以實際應用為目的,主要介紹STM32處理器的功能特點、工作原理、硬件資源和軟件開發方法,引導學生理解掌握STM32嵌入式系統涉及的理論知識,并在此基礎上熟練運用STM32處理器的軟件開發環境和程序調試方法,掌握GPIO、中斷、串口、定時器、SPI、I2C、ADC以及其他基本外設接口的程序設計方法,從硬件設計、軟件實現方面對STM32嵌入式系統進行系統性的講解,能夠讓學生系統性地掌握嵌入式系統硬件設計思路和方法,具備基本的嵌入式系統軟件開發能力,以培養學生獨立分析和解決復雜工程問題的能力,激發學生的創新思維,積極自主地開展創新性實驗活動。
Proteus[10-13]是一款用于電子電路設計的自動化軟件,主要用于電路設計、PCB繪制設計、模擬信號調理和數字信號處理系統以及嵌入式系統的設計和驗證等,推出的Proteus 8.15版本引入了更多的微控制器單元模型和頭文件庫,支持更多的ARM Cortex-M微控制器設備,如STM32F103T6、STM32F401CB等,增加了MCU仿真器的功能和性能,能更加自動化地建立引腳映射等功能。在線仿真微控制器及外圍器件可以幫助檢測和解決可能出現的錯誤、故障以及邏輯問題,以驗證設計的正確性,并進行調試和優化,實現高效、快速、準確的電路設計和仿真。
借助Proteus VSM虛擬仿真軟件與ARM-MDK開發環境靈活設計實驗項目,方便實現與驗證較大的綜合性系統,降低了實驗成本,縮短了開發周期,激發了學生學習的熱情和積極性,對培養學生邏輯思維能力、分析與解決問題的能力具有非常重要的作用,能夠加深學生對STM32嵌入式系統理論知識的理解和掌握,并使學生具備實際開發能力和經驗,為進一步開展相關實踐訓練、科技競賽、產品研發等工作做好技術儲備。合理借鑒職業技能大賽的理念和標準,對標國內、世界先進水平,支持、鼓勵、指導學生積極參加中國技能大賽、全國職業院校技能大賽、世界技能大賽等技能競賽,以競賽成績置換對應課程的學習成績。以“課賽融通、訓賽結合、學以致用、學用相長”為主線,通過虛實結合優化設計教學內容,見表1所列。
3 虛擬仿真技術實驗教學實例
3.1 設計內容要求
以十字交叉路口交通信號燈運行系統為實際案例,結合STM32嵌入式應用技術課程教學大綱要求,利用Proteus 8.15版本虛擬仿真設計十字交叉路口交通信號燈系統。交通信號燈的運行時序如圖1所示。
設計要求如下:
(1)道路為東西南北走向的十字路口,每條馬路各有
2套紅綠燈,且分別使用紅、黃、綠LED燈。
(2)當系統上電啟動后,信號燈系統開始工作。首先,南北方向紅燈亮30 s,東西方向綠燈常亮25 s后閃爍3次(即3 s)再熄滅,綠燈熄滅的同時東西方向的黃燈亮,黃燈亮
2 s后熄滅;然后,東西方向紅燈亮30 s,南北方向綠燈常亮25 s后閃爍3次(即3 s)再熄滅,同時南北方向的黃燈亮2 s再熄滅,一個循環周期結束。東西方向、南北方向交通燈按此規則交替運行。
(3)在南北方向的馬路增加1路按鍵,如果南北綠燈常亮,則說明有特殊情況,如行人還沒有完全通過,可以通過按鍵將此時的綠燈延時10 s,相應的東西方向紅燈延時10 s。
(4)在東西方向的馬路增加1路按鍵,如果東西綠燈常亮,則有特殊情況,如行人還沒有完全通過,可以通過按鍵將此時的綠燈延時10 s,相應的南北方向紅燈延時10 s。
(5)按鍵延時功能,每次循環只能使用一次,防止單方向一直延時,影響另一方向通行。
3.2 硬件電路設計
十字交叉路口交通信號燈運行系統的主控制器采用意法半導體公司(ST)推出的基于Cortex-M3內核的32位中密度、高性能微控制器STM32F103C8T6,其工作頻率為
72 MHz,擁有高速嵌入式存儲器(閃存高達128 KB,SRAM高達20 KB),以及連接到兩條APB總線的各種增強型I/O和外設。結合設計要求,Proteus 中選擇元器件模型,十字交叉路口交通信號燈運行系統采用主控器STM32F103C8、交通信號燈指示TRAFFIC LIGHTS、倒計時顯示7SEG-MPX2-CC、按鍵BUTTON及相關的驅動電路等。搭建出的硬件電路如圖2所示。
圖2中,主控器STM32F103C8與各模塊連接關系為:PA0~PA7分別連接東、西、南、北方向倒計時顯示7SEG-MPX2-CC模塊的段選端A、B、C、D、E、F、G、DP,接口連接上拉排阻RESPACK-8;PA8、PA9分別連接南北方向位選端1、2;PA10、PA11分別連接東西方向位選端1、2;PB0、PB1、PB2分別連接南北方向交通信號燈指示TRAFFIC LIGHTS的紅色、黃色、綠色LED燈;PB3、PB4、PB5分別連接東西方向交通信號燈指示TRAFFIC LIGHTS的紅色、黃色、綠色LED燈;PB6連接南北方向的馬路按鍵;PB7連接東西方向的馬路按鍵,以及主控器STM32F103C8最小系統外圍電路,還增加了蜂鳴器提示模塊。
3.3 軟件程序設計
從交通信號燈的運行時序圖可以看出,該交通信號燈運行系統共有6種狀態,見表2所列。
根據表2的交通信號燈系統的運行狀態S1、S2、S3、S4、S5、S6,介紹軟件程序的設計思路如下。
(1)采用定時器TIM4作為運行狀態的時間計時,定時時長為50 ms,以時間區間的劃分來看采用向上計數模式。
(2)為考慮南北、東西方向的綠燈閃爍狀態,定義TIM4定時中斷次數變量nCounter1和nCounter2,nCounter1達到10次(即500 ms)中斷時,變量nCounter1清零,變量nCounter2加1,并更新交通燈指示狀態。
(3)變量nCounter2達到2次(即1 s)時,變量nCounter2清零,更新顯示時間變量TimeValue。
(4)用時間變量TimeValue判斷當前值所處交通信號燈系統運行狀態S1、S2、S3、S4、S5、S6的時間區間,南北、東西方向的交通指示燈顯示對應運行狀態的顏色。
(5)采用按鍵中斷方式,實現南北、東西方向按鍵綠燈延時10 s功能,每個循環中延時功能只能使用1次,以防止單方向一直延時。若是第一次按下,則綠燈延時變量DelayValue賦值為10,否則不執行任何操作,其中TimeValue值為0或30時,DelayValue清零。
(6)南北、東西方向的倒計時顯示情況如下:
①在0~27 s時,南北方向倒計時顯示值為29+DelayValue-TimeValue,東西方向倒計時顯示值為29+DelayValue-TimeValue-2;
②在28~29 s時,南北方向倒計時顯示值為29+DelayValue-TimeValue,東西方向倒計時顯示值為29+DelayValue-TimeValue;
③在30~57 s時,南北方向倒計時顯示值為59+DelayValue-TimeValue-2,東西方向倒計時顯示值為59+DelayValue-TimeValue;
④在58~59 s時,南北方向倒計時顯示值為59+DelayValue-TimeValue,東西方向倒計時顯示值為59+DelayValue-TimeValue。
(7)一個循環周期結束后,東西方向和南北方向交通燈、倒計時按以上方式再次運行。
3.4 仿真結果分析
在Keil MDK中軟件邏輯分析儀可以分析數字信號、模擬信號、總線信號(SPI、I2C、CAN、UART等)以及用戶自定義變量等,將指定的變量或TREG(虛擬仿真寄存器)值的變化以圖形的方式表示出來。在仿真時,點擊魔法棒進入Debug界面,選擇Use Simulator,在Dialog.DLL下改為DARMSTM.DLL,Parameter下改為-pSTM32F103RC。點擊菜單欄上面的“Debug”按鈕,在工具欄System Analyzer Window中選擇Logic Analyzer,在彈出的Logic Analyzer界面中點擊Setup,在彈出對話框Current Logic Analyzer Signals里添加和刪除“View-Symbols Window”中的Virtual Registers、Special Function Registers以及工程或庫函數折疊標簽下的名稱,否則為不可識別的未知信號。若觀測引腳PB0,直接輸入PORTB.0或者GPIOB_ODR.0,Signal Display的Display Type更改為Bit,也可為不同信號設置不同的顏色進行區分。
點擊Run或F5可以觀測到添加引腳或變量的波形,采用MDK-ARM邏輯分析儀觀測十字交叉路口交通信號燈的波形如圖3所示。
將編譯生成的HEX文件路徑添加關聯至微控制器Program File處,仿真運行結果如圖4所示。
圖4中,引腳連線處的顏色表示不同的電平狀態,藍色表示高電平,紅色表示低電平,可以直觀、形象、生動地觀察引腳的電平實時變化,以及信號燈的變化和倒計時的情況,這些方法豐富了檢查、調試程序的邏輯關系,加強了對所編寫程序的深刻理解和熟練運用。
4 教學成效分析
十字交叉路口交通信號燈運行系統涉及的知識綜合性較強,包括GPIO的輸入輸出、外部中斷、定時器中斷、信號燈運行狀態的邏輯分析處理、7段數碼管的動態顯示等。針對其硬件設計思路和軟件設計思想,經過仿真軟件Proteus 8.15和開發環境MDK-ARM 5.38a的聯合調試,驗證了該設計過程的正確性。將這種方式應用于我校應用電子技術和電子信息工程技術專業的STM32嵌入式應用技術課程教學中,激發了學生對電子產品設計與制作的濃厚興趣,提升了學生產品設計的綜合素養。后續可以采用Altium Designer按照硬件設計電路繪制原理圖和制作PCB板,進一步焊接、裝配,完成電子產品的設計與制作。
拔尖學生經過集中訓練后,參加甘肅省職業院校學生技能大賽(高職組)電子產品設計與制作賽項,取得了不菲的成績。其中,2021年培養拔尖學生6名,獲省級三等獎1項;2022年培養拔尖學生9名,獲省級二等獎1項、省級三等獎1項;2023年培養拔尖學生12名,獲省級二等獎1項、省級三等獎2項。拔尖學生人數逐年增長,學生受眾面也逐漸擴大,提升了學生工程應用能力和抽象思維能力,為學生的進一步深造學習、職業發展夯實了基礎,取得了良好的教學效果。
5 結 語
理論與實踐融合一體的教學改革是電子信息類專業人才培養的重要環節,引入虛擬仿真軟件Proteus,結合ARM-MDK編程環境,二者聯合仿真、調試STM32嵌入式應用技術的實際項目工程。可視化仿真界面有利于直觀、形象地觀察設計結果,縮短了產品開發周期,提升了學生軟硬件聯合設計與開發應用的能力。以往該課程的大多數教學方式停滯在寄存器的說明及驗證,或者庫函數的解釋及調用階段,并未真正應用于典型案例或實際項目中,學生缺乏邏輯分析、數據處理的工程應用能力。ST意法半導體公司推出的軟件STM32CubeMX采用圖形化界面配置STM32處理器的外設接口或硬件設備,生成ARM-MDK代碼便于應用層的二次程序設計,極大地弱化了底層硬件驅動的編程。而新推出的軟件STM32CubeIDE集成了STM32CubeMX圖形化界面配置和ARM-MDK應用層的程序設計。因此,合理利用軟件調試工具,能夠有效培養學生解決問題的能力,進一步培養學生工程應用開發能力和創新思維邏輯分析能力。隨著技術的更新迭代,也需要采用新技術轉變教學理念和教學模式,為社會培養嵌入式智能產品設計與制作、檢測與維修方面的高素質技術技能型人才。
參考文獻
[1]佟國香,楊桂松,鄔春學.構建循序漸進的嵌入式創新創業人才培養模式[J].實驗科學與技術,2021,19(5):120-123.
[2]鄧清勇,龍賽琴,周龍.協同育人模式下的嵌入式系統課程改革與實踐[J].計算機教育,2022,20(3):143-147.
[3]李亞蘭,陳淼,李翔,等.培養實踐動手能力的嵌入式系統教學方法改革[J].計算機教育,2020,18(3):141-144.
[4]呂東澔,朱佰成,崔桂梅,等.基于CDIO理念的嵌入式系統教學探索[J].實驗室研究與探索,2019,38(1):183-185.
[5]殷復鵬,鄧曉紅,張雷.基于模塊化的虛擬仿真實驗室建設[J].實驗技術與管理,2020,37(6):259-262.
[6]常亮,劉慧君,孫學軍,等.高校組織建設虛擬仿真實驗教學項目的思考—以河北大學為例[J].實驗技術與管理,2020,37(12):29-32.
[7]楊靜,胡秋琦,劉能鋒,等.嵌入式系統設計實驗教學改革與實踐[J].計算機教育,2022,20(4):182-187.
[8]閆龍,張鑫,張順堂,等.教學-實驗-實訓三位一體的單片機教學改革探討[J].實驗室研究與探索,2019,38(8):220-223.
[9]陳軍,韓清華,楊安迪,等.項目團隊教學法在嵌入式單片機課堂的探索與實踐[J].實驗室研究與探索,2022,41(4):232-235.
[10]孟霆,張曉峻,車雪峰,等.基于Proteus軟件的單片機課程線上教學探索[J].實驗室研究與探索,2021,40(11):184-188.
[11]王向玲. Proteus模擬溫室溫濕度控制系統的實踐教學[J].實驗室研究與探索,2020,39(1):120-124.
[12]孫萬麟,宋莉莉,韓晨.基于Keil+Proteus的單片機實驗設計及仿真[J].系統仿真技術,2020,16(3):181-184.
[13]譚筠梅,李玉龍,王履程.基于Proteus的單片機虛擬仿真實驗案例設計[J].實驗技術與管理,2018,35(5):122-125.