STM32固件庫(kù)V3.5 在Keil MDK環(huán)境下使用方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
簡(jiǎn)介
寫(xiě)這篇教程主要是和大家分享使用STM32的基本方法,也是給自己學(xué)習(xí)過(guò)程的總結(jié)、記錄和備忘,避免重復(fù)學(xué)習(xí)之前明白但又忘記的知識(shí)和操作。我現(xiàn)在也是剛開(kāi)始接觸學(xué)習(xí)STM32,我是在STM32的固件庫(kù)V3基礎(chǔ)上進(jìn)行學(xué)習(xí)。在這里我和大家分享一下使用V3.x庫(kù)的方法,希望大家喜歡,如有錯(cuò)誤請(qǐng)指出。
這篇教程分以下幾個(gè)方面,一:建立工程,設(shè)置工程屬性。二:建立條理清晰的GROUP;三:使用JLINK仿真調(diào)試。下面就分別逐個(gè)說(shuō)明。
一、新建MDK工程
1、首先,打開(kāi)MDK軟件,再點(diǎn)擊Project->New uVision Project…,如下圖所示:
彈出如下對(duì)話(huà)框:
新建一個(gè)文件夾MDK工程,然后把工程名字設(shè)為test,點(diǎn)擊保存。彈出選擇器件的對(duì)話(huà)框,
我們使用的是stm32單片機(jī),所以選擇STMicroelectronics下面的器件,如STM32F107VCT6,如圖所示:
點(diǎn)擊OK,MDK會(huì)彈出一個(gè)對(duì)話(huà)框,如圖所示:?jiǎn)柺欠窦虞d啟動(dòng)代碼到當(dāng)前工程下面,
如果選擇是,則這個(gè)啟動(dòng)代碼是舊版本庫(kù)的啟動(dòng)代碼,新版本的啟動(dòng)代碼和這個(gè)不同,需要自己添加。在這里我們使用的是新版本的庫(kù),所以點(diǎn)擊否,自己添加啟動(dòng)代碼。
啟動(dòng)代碼是一段和硬件相關(guān)的匯編代碼,是必不可少的!這個(gè)代碼具體如何工作,感興趣可以研究一下,現(xiàn)在可以不必關(guān)心它。
2、接下來(lái)我們需要對(duì)工程進(jìn)行一些設(shè)置。
在工程區(qū),右鍵點(diǎn)擊Target1,選擇Options for Target‘Target1’ 如圖所示:
彈出如下窗口,選擇Output標(biāo)簽,設(shè)置目標(biāo)文件的生成路徑及其他相關(guān)參數(shù)。
如圖點(diǎn)擊Select Folder for Objects 在彈出的窗口中點(diǎn)空白處新建“Obj”文件夾,然后雙擊“Obj” 文件夾,如圖中所示的Path后,點(diǎn)擊OK.
點(diǎn)擊Listing標(biāo)簽,新建“l(fā)ist”文件夾,設(shè)置鏈接文件的生成路徑,及相關(guān)參數(shù)。如圖所示:
【友情提示:Obj和list這兩個(gè)文件夾會(huì)保存Keil編譯連接過(guò)程中產(chǎn)生的一些文件,雖然是一個(gè)不起眼的細(xì)節(jié)但是也請(qǐng)大家關(guān)注,不然在工程目錄下面“邋遢”的很,所以強(qiáng)烈建議創(chuàng)建這兩個(gè)文件夾!】
點(diǎn)擊Debug標(biāo)簽,選擇使用的仿真器,我們使用JLINK V8進(jìn)行仿真調(diào)試,對(duì)應(yīng)的,在此選擇Cortex-M/R J-LINK/J-Trace。Cortex-M/R J-LINK/J-Trace前的Use要選中,否則J-LINK調(diào)試會(huì)出問(wèn)題。如圖所示:
點(diǎn)擊右側(cè)的Setting,配置JLINK下載參數(shù),主要是選擇目標(biāo)處理器系列,添加目標(biāo)芯片對(duì)應(yīng)的燒寫(xiě)算法。
圖中要勾選Reset and Run 選項(xiàng),如果Flash Download 算法不對(duì),請(qǐng)點(diǎn)擊Add 重新添加Flash算法。
點(diǎn)擊Utilities,進(jìn)行公共參數(shù)設(shè)置
至此,我們已經(jīng)完成了一個(gè)RVMDK工程參數(shù)設(shè)置。
二、介紹MDK工程的文件管理方面的功能。
我們?cè)谑褂肧T標(biāo)準(zhǔn)的固件庫(kù)進(jìn)行代碼設(shè)計(jì)時(shí),一個(gè)工程內(nèi)可能會(huì)包含很多的庫(kù)文件,因此對(duì)文件進(jìn)行管理就非常的必要。
如下圖所示,右鍵點(diǎn)擊Target1,選擇Manage Components,進(jìn)入分類(lèi)文件管理設(shè)置。
在彈出的選擇框中,可以設(shè)置工程名,增加、刪減文件夾。以及在某個(gè)文件夾內(nèi)添加刪除文件。
在完成以上操作后,一個(gè)MDK工程就設(shè)置完成了,只需要依據(jù)實(shí)際應(yīng)用要求編寫(xiě)相關(guān)代碼即可。
【友情提示:Groups下的文件夾不是實(shí)際存在的(如果這里的名字跟實(shí)際工程中的文件夾同名也不要以為它是真實(shí)的,否則不同名時(shí),你在硬盤(pán)中是找不到它們的),只是為了工程管理建立的。】
我個(gè)人覺(jué)得標(biāo)準(zhǔn)的庫(kù)文件“埋”的太深,使用起來(lái)有點(diǎn)不方便,所以我一般對(duì)這些文件進(jìn)行一些整理,把相關(guān)文件放在一起,并取上一個(gè)標(biāo)準(zhǔn)化的名字,這些文件夾的名字一般和原始固件庫(kù)文件夾的名字相同,只是把需要的文件放在一起。一般在工程目錄下面我會(huì)建立以下幾個(gè)文件夾,如圖所示。當(dāng)然還會(huì)建立前面已經(jīng)建立的兩個(gè)很有用的文件夾(List和Obj)
自己建立的文件夾和庫(kù)文件的對(duì)應(yīng)關(guān)系:
StdPeriph_Driver文件夾內(nèi)的內(nèi)容與標(biāo)準(zhǔn)庫(kù)保持一致。
STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver
StartUp文件夾內(nèi)的文件在庫(kù)中的位置:
STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xStartUp
CMSIS文件夾內(nèi)的文件在庫(kù)中的位置:
STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x
stm32f10x.h,system_stm32f10x.c, system_stm32f10x.h
STM32F10x_StdPeriph_Lib_V3.5.0ibrariesCMSISCM3CoreSupport
core_cm3.c, core_cm3.h
Groups文件夾的名稱(chēng)和工程文件夾的名稱(chēng)盡量保持一致,如上圖所示。為每個(gè)Group添加同名文件夾下的源文件或者頭文件,為了便于查看代碼,我把源文件和頭文件都添加進(jìn)Group中(除StdPeriph_Driver),在這里注意過(guò)濾文件的類(lèi)型。StdPeriph_Driver中只添加需要的源文件,例如建立一個(gè)LED閃爍的工程,那么這個(gè)工程除了進(jìn)行必要的初始化之外,只需要包含GPIO的操作函數(shù),當(dāng)然需要使用GPIO就必須要使能GPIO的時(shí)鐘,RCC是絕對(duì)少不了的。所以只需要包含misc.c,stm32f10x_gpio.c和stm32f10x_rcc.c。添加需要的文件之后,工程目錄如圖所示。
現(xiàn)在重新說(shuō)明一下一個(gè)工程建立的文件夾:
MDK工程:內(nèi)有List和Obj兩個(gè)文件夾
CMSIS:包含系統(tǒng)的內(nèi)核文件
StartUp:包含各種啟動(dòng)文件
User:用戶(hù)編寫(xiě)的應(yīng)用文件
StdPeriph_Driver:內(nèi)有src和inc兩個(gè)文件夾,是標(biāo)準(zhǔn)庫(kù)提供的源文件和頭文件。
當(dāng)然也有人直接將List和Obj兩個(gè)文件夾放在User文件夾內(nèi),然后去掉MDK工程文件夾。這樣也是可以的,看個(gè)人愛(ài)好了。我習(xí)慣將User文件夾獨(dú)立出來(lái)不放List、Obj和**.uvproj等文件,只放自己編寫(xiě)的應(yīng)用文件,這樣當(dāng)項(xiàng)目有很多應(yīng)用文件的時(shí)候可以在User內(nèi)建立src和inc兩個(gè)文件夾存放源文件和頭文件,使文件結(jié)構(gòu)看起來(lái)更加清晰。
需要說(shuō)明的是,雖然在有些Group中包含了一些頭文件,但是Keil在編譯連接的時(shí)侯卻不知道頭文件在什么地方,所以一定要指定頭文件的路徑。
【重要】指定的頭文件為:..CMSIS;..StdPeriph_Driverinc;..User
【重要】?jī)蓚€(gè)重要的宏也一定要指定:USE_STDPERIPH_DRIVER,STM32F10X_MD
三、J-LINK仿真調(diào)試。
【強(qiáng)調(diào)】:Debug標(biāo)簽,使用JLINK V8進(jìn)行仿真調(diào)試,對(duì)應(yīng)的Cortex-M/R J-LINK/J-Trace前的Use要選中,否則J-LINK調(diào)試會(huì)出問(wèn)題。
這部分我就不多說(shuō)了,在實(shí)際硬件平臺(tái)上多多練習(xí)吧,祝大家在學(xué)習(xí)過(guò)程中不斷提高。
注:此文檔參考了網(wǎng)上的一篇文章和神舟開(kāi)發(fā)手冊(cè)的部分內(nèi)容。