梁永恩
(廣東科貿(mào)職業(yè)學(xué)院信息與自動(dòng)化學(xué)院,廣州510430)
嵌入式技術(shù)課程是高職院校電子信息類的一門專業(yè)課程,主要講授嵌入式系統(tǒng)原理及其應(yīng)用。目前,嵌入式技術(shù)主控芯片大多以32 位ARM 核單片機(jī)為主。其中,STM32 系列處理器是意法半導(dǎo)體公司推出的基于ARM Cortex-M 內(nèi)核32 位微處理器,其特點(diǎn)是高性能、低成本、低功耗、實(shí)時(shí)性強(qiáng),STM32 產(chǎn)品廣泛應(yīng)用于工業(yè)控制、消費(fèi)電子、物聯(lián)網(wǎng)、通訊設(shè)備、醫(yī)療服務(wù)、安防監(jiān)控等應(yīng)用領(lǐng)域。為了適應(yīng)時(shí)代需要,當(dāng)前各高職院校電子信息類專業(yè)在原有51 單片機(jī)技術(shù)課程的前提下,紛紛開展了基于STM32 系列處理器的嵌入式技術(shù)課程[1-2]。
嵌入式技術(shù)課程一般是在安排在8 位單片機(jī)技術(shù)課程后開設(shè)。與8 位單片機(jī)相比,STM32 芯片集成度高,功能強(qiáng)大,外圍接口豐富,線路復(fù)雜,不適于用手工制作開發(fā)板,故教學(xué)平臺(tái)多以現(xiàn)有廠家提供的嵌入式實(shí)驗(yàn)箱或嵌入式開發(fā)板為主。
當(dāng)前國內(nèi)高校的STM32 嵌入式技術(shù)主要講授STM32 處理器的工作原理及外設(shè)應(yīng)用,教學(xué)知識(shí)點(diǎn)包括建立工程模板、通用輸入輸出接口(GPIO)、外部中斷、串口通信、DMA 控制器、定時(shí)器、模數(shù)轉(zhuǎn)換器等。開設(shè)基礎(chǔ)實(shí)驗(yàn)內(nèi)容涉及GPIO 輸入輸出、串口、中斷、定時(shí)器、DMA、ADC、DAC 等。依托的實(shí)驗(yàn)硬件以開發(fā)板為主,采用寄存器開發(fā)或庫函數(shù)開發(fā)實(shí)現(xiàn)具體應(yīng)用。ST 公司提供了基于Cortex 微控制器軟件接口標(biāo)準(zhǔn)(CMSIS)的官方開發(fā)固件庫,為接口外設(shè)和實(shí)時(shí)操作系統(tǒng)提供了簡單的處理器軟件接口,屏蔽了硬件差異。STM32 有數(shù)百個(gè)寄存器,用戶想很快掌握每一個(gè)寄存器的用法是十分困難的。因此,在實(shí)際的實(shí)驗(yàn)教學(xué)中大都采用基于STM 固件庫函數(shù)的開發(fā)方式,用戶不需要知道操作的是哪一個(gè)寄存器,只需要指導(dǎo)調(diào)用哪些函數(shù)即可,大大提高了開發(fā)效率。
當(dāng)前的教學(xué)中主要存在兩個(gè)問題:
(1)由于資金和教學(xué)資源的投入限制以及受實(shí)驗(yàn)場(chǎng)地、實(shí)驗(yàn)設(shè)備數(shù)量、實(shí)驗(yàn)耗材費(fèi)用、實(shí)驗(yàn)時(shí)間、師資力量、實(shí)驗(yàn)安全等問題的影響而使得實(shí)驗(yàn)內(nèi)容上比較單一,以演示性、驗(yàn)證性為主,學(xué)生在實(shí)踐教學(xué)階段動(dòng)手能力不足,難以滿足培養(yǎng)高素質(zhì)技能型人才的需求。
(2)STM32 單片機(jī)教學(xué)理論復(fù)雜,組成架構(gòu)理解起來較為抽象,另外使用ST 固件庫開發(fā)的方式學(xué)生需要面臨復(fù)雜的STM32 初始化配置,形成相應(yīng)的模板才能進(jìn)行后續(xù)實(shí)驗(yàn)開發(fā),影響學(xué)生的開發(fā)效率。
基于上述問題,本文討論了一種基于Proteus+STM32CubeMX +MDK-ARM 的STM32 嵌入式實(shí)驗(yàn)平臺(tái)設(shè)計(jì)方案,設(shè)置虛實(shí)結(jié)合的開放性實(shí)驗(yàn)教學(xué),使用STM32CubeMX 作為圖形化配置工具,充分利用各項(xiàng)教學(xué)資源,開展一體化項(xiàng)目任務(wù)驅(qū)動(dòng)教學(xué),切實(shí)培養(yǎng)學(xué)生的綜合技能與創(chuàng)造能力。
使用仿真軟件Proteus 8.7[3-4]、圖形化配置工具STM32CubeMX 5.3[5]及集成開發(fā)環(huán)境MDK-ARM 5.25搭建虛擬實(shí)驗(yàn)平臺(tái)。
使用英國Lab Center Electronics 公司出版的EDA工具軟件Proteus 8.7 作為仿真軟件,該版本支持8051、HC11、AVR、ARM7、8086、Cortex 和DSP 等系列處理器,支持IAR、Keil 和MATLAB 等多種編譯器[6]。實(shí)驗(yàn)芯片選擇STM32F103 系列,內(nèi)核為ARM Contex-M3。
STM32CubeMX 是ST 意法半導(dǎo)體近幾年來大力推薦的STM32 芯片圖形化配置工具,允許用戶使用圖形化向?qū)蒀 初始化代碼,可以大大減輕開發(fā)工作,時(shí)間和費(fèi)用。它具有如下特性:直觀的選擇MCU 型號(hào),可指定系列、封裝、外設(shè)數(shù)量等條件;微控制器圖形化配置;自動(dòng)處理引腳沖突;動(dòng)態(tài)設(shè)置時(shí)鐘樹,生成系統(tǒng)時(shí)鐘配置代碼;可以動(dòng)態(tài)設(shè)置外圍和中間件模式和初始化;C 代碼工程生成器覆蓋了STM32 微控制器初始化編譯軟件,如IAR、Keil、GCC。
MDK-ARM 是美國Keil 軟件公司出品的支持ARM 微控制器的一款集成開發(fā)環(huán)境。它包含了工業(yè)標(biāo)準(zhǔn)的Keil C 編譯器、宏匯編器、調(diào)試器、實(shí)時(shí)內(nèi)核等組件。支持Cortex-M、Cortex-R4、ARM7 和ARM9 系列器件。用戶可以在修改STM32CubeMX 生成的項(xiàng)目代碼,可使用Proteus 聯(lián)合調(diào)試虛擬實(shí)驗(yàn)項(xiàng)目或使用ST-Link 在開發(fā)板上調(diào)試程序。
硬件平臺(tái)包括STM32 最小系統(tǒng)開發(fā)板、ST-LINK下載器、面包板、CH340G USB 轉(zhuǎn)串口模塊、LED、傳感器等。STM32 開發(fā)板芯片型號(hào)為STM32F103C8T6,程序存儲(chǔ)器容量64KB,頻率72MHz。利用面包板實(shí)現(xiàn)外圍接口電路,可以實(shí)現(xiàn)更多功能,激發(fā)學(xué)生的學(xué)習(xí)興趣。
課程內(nèi)容選取以簡單夠用為原則,以項(xiàng)目為主線,每個(gè)項(xiàng)目包含若干個(gè)具體的典型任務(wù),實(shí)驗(yàn)內(nèi)容虛實(shí)結(jié)合,把知識(shí)和技能的學(xué)習(xí)融入到任務(wù)完成的過程中。項(xiàng)目如表1 所示。
表1 嵌入式技術(shù)項(xiàng)目
(1)仿真設(shè)計(jì)
在教學(xué)實(shí)踐中,先引入Proteus 進(jìn)行仿真電路設(shè)計(jì)。以定時(shí)器應(yīng)用的呼吸燈例,要求學(xué)生能夠?qū)?shí)現(xiàn)LED 亮度隨時(shí)間周期變化,效果類似人的呼吸。按照課程標(biāo)準(zhǔn)的要求,以項(xiàng)目任務(wù)的形式布置下去,項(xiàng)目布置之前,教師要將定時(shí)器工作原理結(jié)構(gòu)、定時(shí)器寄存器、PWM 調(diào)制等相關(guān)知識(shí)點(diǎn)及仿真參考示例進(jìn)行講解,循序漸進(jìn)引導(dǎo)學(xué)生進(jìn)行項(xiàng)目設(shè)計(jì),并將課件、視頻等材料上傳至學(xué)習(xí)通App 中,學(xué)生可以利用課外時(shí)間自行下載和自主學(xué)習(xí)。另外,教師要把學(xué)生重點(diǎn)關(guān)注的問題和共性問題如STM32CubeMX 定時(shí)器配置放在課堂重點(diǎn)講解和分析。值得一提的是,創(chuàng)建工程時(shí)沒有使用標(biāo)準(zhǔn)外設(shè)固件庫,而是使用STM32CubeMX 創(chuàng)建C 語言工程,在圖形界面進(jìn)行微處理器的選擇和配置MCU 引腳、時(shí)鐘樹及外設(shè),然后在MDK-ARM 打開該工程中添加控制代碼,編譯生成HEX 文件,將該文件加載到仿真電路的MCU 中,調(diào)試仿真電路和程序,直至成功。使用STM32CubeMX 使MCU 的配置工作變得直觀,大大降低了學(xué)生的開發(fā)難度。在仿真設(shè)計(jì)中,學(xué)生的實(shí)現(xiàn)方法各異,有的用模擬方式,有的用定時(shí)器生成PWM 波的方式。通過仿真手段可以方便地對(duì)實(shí)驗(yàn)?zāi)P?、參?shù)進(jìn)行修改,實(shí)現(xiàn)“可見即可得”的效果,提高學(xué)生的學(xué)習(xí)興趣和積極性。
(2)硬件設(shè)計(jì)
根據(jù)仿真結(jié)果,進(jìn)行實(shí)物設(shè)計(jì)。根據(jù)電路設(shè)計(jì)圖,在STM32 最小系統(tǒng)開發(fā)板上通過面包板擴(kuò)展外圍電路,使用ST-LINK 下載器下載HEX 文件,在MDKARM 環(huán)境中調(diào)試程序直至成功。有了仿真驗(yàn)證的基礎(chǔ),學(xué)生的硬件設(shè)計(jì)成功率很高。以呼吸燈為例,學(xué)生需用1kΩ電阻串聯(lián)LED 燈的正極,再用杜邦將MCU的控制引腳、電源引腳與面包板對(duì)應(yīng)的引腳進(jìn)行連接即可。通過布置思考題的方式引導(dǎo)學(xué)有余力的學(xué)生深入學(xué)習(xí),例如在實(shí)現(xiàn)呼吸燈后,通過按鍵控制燈的變化周期。需要注意的是在配置項(xiàng)目時(shí)要將STM32Cube-MX 中的Debug Serial Wire 選項(xiàng)選中,否則不能使用ST-LINK 下載程序。通過親手搭建電路和設(shè)計(jì)調(diào)試軟件,提高了學(xué)生的動(dòng)手能力,鍛煉了學(xué)生在實(shí)際中發(fā)現(xiàn)問題、分析問題和解決問題的能力。從學(xué)生仿真和實(shí)物實(shí)現(xiàn)來看,較好地達(dá)到了預(yù)期效果。
實(shí)施過程性考核,把仿真設(shè)計(jì)和實(shí)物制作納入課程考核方案中。綜合考勤成績占20%,從出勤率、積極互動(dòng)和課堂問答三方面進(jìn)行考核。平時(shí)項(xiàng)目作品占50%,該部分又分為仿真設(shè)計(jì)環(huán)節(jié)和實(shí)物制作環(huán)節(jié),具體分?jǐn)?shù)占比依照實(shí)際情況而定。綜合項(xiàng)目設(shè)計(jì)占30%,根據(jù)項(xiàng)目完成情況以及答辯情況進(jìn)行綜合評(píng)價(jià)。此方案強(qiáng)化了平時(shí)項(xiàng)目的過程考核,一方面通過成績導(dǎo)向使學(xué)生更加重視平時(shí)的項(xiàng)目實(shí)踐,另一方面教師可以更深入掌握的學(xué)生的學(xué)習(xí)情況,便于持續(xù)改進(jìn)教學(xué)方法。
本課程通過虛實(shí)融合的方式,將課程從課上延伸到課下,取得了良好的教學(xué)效果。引入STM32CubeMX圖形化配置方式和Proteus 仿真設(shè)計(jì)使教學(xué)更加直觀、形象,大大提高了學(xué)生對(duì)嵌入式技術(shù)課程的學(xué)習(xí)興趣,提升了學(xué)生的動(dòng)手能力,有效降低了實(shí)驗(yàn)設(shè)備的損壞率和耗材費(fèi)用。