龍祖連
(廣西水利電力職業(yè)技術學院,廣西南寧,530023)
在電子信息專業(yè)人才培養(yǎng)方案中提到,學生通過專業(yè)學習后,具備電子信息產品研發(fā)、生產管理、售后服務等崗位能力。STM32課程作為電子信息專業(yè)的一門專業(yè)核心課,學生掌握STM32編程的程度,決定學生以后就業(yè)的崗位的情況;在高職中如何能讓學生學習好STM32編程成為老師的一個難題。傳統(tǒng)的STM32實驗教學編程都是使用寄存器編程或是函數(shù)庫編程的,這兩種實驗編程的方法對我們高職的學生來說都是很難學和理解的,首先寄存器的編程方法比較熟悉STM32單片機的寄存器,而單片機的型號不一樣,寄存器的類型也不一樣,這樣一來學生就得去記很多的寄存器;其次庫函數(shù)的編程方法,雖然ST公司做有很多的標準函數(shù)庫,但去查找也是很難的,同時不同的公司也會做自己的函數(shù)庫,這樣學生在使用的時候很難分清函數(shù)庫的調用情況。那有沒有有一種能讓我們高職的學生容易上手、容易理解的方法去學生STM32單片機呢?這就是本文將要闡述的STM32CubeMX圖形化編程。
STM32CubeMX 是ST 意法半導體近幾年來大力推薦的STM32 芯片圖形化配置工具[5],直接由圖形界面簡單配置下,生成初始化代碼,并對外設做了進一步的抽象,讓開發(fā)人員更只專注應用的開發(fā),可以大大減輕開發(fā)工作時間和費用,提高開發(fā)效率[1]。STM32CubeMX幾乎覆蓋了STM32全系列芯片。在CubeMX上,通過傻瓜化的操作便能實現(xiàn)相關配置,最終能夠生成C語言代碼,支持多種工具鏈,比如MDK、IAR For ARM、TrueStudio等,省去了我們配置各種外設的時間,大大的節(jié)省了時間。
在當前高校的電子類的專業(yè)高級的單片機編程基本上都是使用STM32單片機,因為它是32位的單片機,在做系統(tǒng)或產品上它具有工作效率高、運行速度快、成本低等特點,都得到廣大師生的使用[3]。而目前多數(shù)的高校對STM32單片機的教學基本上使用寄存器編程教學或庫函數(shù)編程教學。
進行具體的項目開發(fā)前,做好項目創(chuàng)建工作,通常包括如下步驟:
(1)新建工程項目的文件夾和子文件夾(如user、output、listing等);
(2)使用MDK新建(或打開項目),選擇目標CPU、添加CMSIS核心、STM32啟動代碼和外設驅動程序,構成運行環(huán)境;
(3)添加包含main()函數(shù)的主程序文件;
(4)配置目標選項。
(1)函數(shù)庫編寫閃爍LED部分函數(shù),如圖1所示。
圖1 函數(shù)庫編寫閃爍LED部分函數(shù)
(2)寄存器編寫閃爍LED部分函數(shù),如圖2所示。
圖2 寄存器編寫閃爍LED部分函數(shù)
STM32庫函數(shù)本質上是對外設寄存器直接編程,只是為了方便應用封裝成了函數(shù)。所以用戶的應用程序也可以繞過庫函數(shù),直接對寄存器編程。直接對寄存器編程的代碼效率最高。不過,需要花費較多的時間學習和查閱STM32數(shù)據(jù)手冊,這個過程繁瑣、易錯,難以移植。
使用STM32CUberMX開發(fā)流程如下:
(1)在STM32CubeMX中直觀的配置MCU;
(2)生成開發(fā)工程;
(3)編寫功能代碼;
(4)配置目標選項。
(1)打開STM32CubeMX軟件,選擇ACCESS TO MCU SELECTOR新建工程,如圖3所示。
圖3 STM32CubeMX軟件界面
(2)選擇開發(fā)板的芯片及芯片的封裝類型,如圖4所示。
圖4 軟件界面芯片選擇
(3)選擇Pinout&Configuration菜單,點擊Categorier/System Core/SYS,在Mode下面對應的選擇,完成之后在右邊的芯片就出現(xiàn)對應的標識,如圖5所示。
圖5 SYS配置選項
(4)配置時鐘選項,如圖6所示。
(5)配置芯片引腳輸入/輸出及其他特性(及LED2的連接引腳),如圖7所示。
圖6 時鐘選項
圖7 芯片引腳配置
(6)點擊Clock Configuration(時鐘源配置選項),對時鐘源進行配置,如圖8所示。
圖8 時鐘源配置
(7)點擊Projiect Manager(工程管理)進行配置,首先在界面選擇Project選項,如圖9所示。
圖9 工程管理配置
其次,點擊Code Generator(代碼生成器)進一步配置(重點),如圖10所示。
圖10 代碼生成器配置
(8)點擊GENERATE CODE創(chuàng)建工程,如圖11所示。
圖11 代碼生成界面
(9)點擊Open Projiect(打開工程),就自動的關聯(lián)打開MDK-ARM V5軟件并創(chuàng)建工程保存在文件夾里,如圖12所示。
圖12 打開工程文件
(10)在MDK-ARM軟件里面找到main.c文件中主函數(shù)里的while循環(huán)語句添加兩句語句就可以實現(xiàn)閃爍的LED了,如圖13所示。
圖13 代碼修改界面
注意:所有自己編寫的代碼請放在/* USER CODE BEGIN XXX */ /* USER CODE END XXX */ 之間,這樣我們修改工程的時候你自己寫的代碼就不會被刪除。
本文以STM32單片機控制閃爍的LED實驗為例,分別以寄存器、庫函數(shù)和STM32CubeMX 三種編程開發(fā)模式去實現(xiàn)閃爍的LED控制。從編程過程我們發(fā)現(xiàn)寄存器和庫函數(shù)編程中都需要導入很多都文件,特別是IO口的初始化和時鐘的配置都是需要花費很多的時間去理解;而使用STM32CubeMX圖形化編程,我們只需要簡單的圖形化配置就可以完成代碼的生成及實現(xiàn)。通過多年的教學實驗,對三種STM32編程特點進行了總結和對比,如表1所示。
表1 三種編程特點對比表
總之,在實踐教學中,我們使用STM32CubeMX圖形化編程開發(fā)做設計,簡單、易懂,學生的接受情況也比較好,相對之前的寄存器和庫函數(shù)編程教學,取得了良好的效果。使用STM32CubeMX圖形化進行配置,及使用HAL庫進行開發(fā),這樣極大的縮短了新建工程的時間,而且時鐘配置和中斷配置都更加簡單方便,更適合我們高職學生的學習。