標(biāo)題: 32位MCU (Keil MDK工程建立) [打印本頁(yè)]
作者: geige 時(shí)間: 2015-7-26 01:33
標(biāo)題: 32位MCU (Keil MDK工程建立)
我們要開(kāi)始建立我們的第一個(gè)工程.
在開(kāi)始之前,請(qǐng)讀者先從網(wǎng)上獲取ST公司提供的STM32 固件庫(kù)“stm32f10x_fw_archive v2.0 (May2009)”,然后將其解壓。
首先請(qǐng)讀者在任意一個(gè)地方建立一個(gè)空文件夾,并將其命名為“STM32_FW”。然后在STM32_FW 里新建 6 個(gè)文件夾,分別命名為“boot”、“library”、“src”、“obj”、“list”、“library”。
如下圖所示:
接下來(lái)請(qǐng)執(zhí)行如下操作:
1、在剛才解壓“stm32f10x_fw_archivev2.0(May2009)”得到的文件夾里按照路徑\stm32f10x_fw_archive v2.0 (May2009)\Archive,找到um0427.rar并將其解壓。
2、在第1步解壓到的um0427文件夾里按路徑“\um0427\FWLib\project\RVMDK”找到文件:“cortexm3_macro.s”和“stm32f10x_vector.s”,并將其復(fù)制到前面所新建的“STM32_FW\boot”文件夾中。此二者為STM32 在 MDK 環(huán)境下的啟動(dòng)文件,是每一個(gè) STM32工程所必需的。
3、在“\um0427\FWLib\project”中找到文件:“stm32f10x_it”和“stm32f10x_it”,并將其復(fù)制到“STM32_FW\interrupt”中。此二者包含了STM32 在 MDK 下的中斷服務(wù)入口函數(shù)。
4、將“\um0427\FWLib\library”中的“inc”文件夾和“src”文件夾復(fù)制到“STM32_FW\library”中。此二文件夾為STM32 的固件函數(shù)庫(kù)文件,一般情況下這兩個(gè)文件夾里的文件都不推薦改動(dòng),可以設(shè)置只讀屬性。
5、最后請(qǐng)新建一個(gè)名字為“main.c”文件,放入“STM32_FW\src”中。
執(zhí)行完以上操作后,應(yīng)該得到如下結(jié)構(gòu):
STM32_FW\boot:“cortexm3_macro.s”和“stm32f10x_vector.s”文件;
STM32_FW\interrupt:“stm32f10x_it”和“stm32f10x_it”文件;
STM32_FW\src:“main.c”文件;
STM32_FW\library:“inc”文件夾和“src”文件夾;
建立“STM32_FW”文件夾的用意在于,它可以作為我們以后進(jìn)行STM32 程序開(kāi)發(fā)時(shí)候的一個(gè)目錄結(jié)構(gòu)。以后我們新建任何一個(gè)工程時(shí),只要直接復(fù)制這個(gè)文件夾里面的四個(gè)文件夾就可以完成一個(gè)工程最基本的文件結(jié)構(gòu)的建立了。這樣可以提高我們的開(kāi)發(fā)效率。
下一步,我們來(lái)真正著手建立第一個(gè)工程。
首先新建一個(gè)文件夾,筆者將其命名為“MyFirstJob”。并將“STM32_FW”中的“boot”、“library”、“src”、“obj”、“list”、“library”文件夾復(fù)制到“MyFirstJob”中。如下圖所示:

然后執(zhí)行如下操作:
1、打開(kāi)Keil uVision4,依次點(diǎn)擊Project-New uVisionProject(如果當(dāng)前有工程正在打開(kāi),請(qǐng)先執(zhí)行Project-CloseProject將其關(guān)閉),彈出窗口,填寫(xiě)工程名和保存路徑(保存在我們剛才新建的“MyFirstJob”下,命名為MyFirstJob),然后點(diǎn)擊保存。
如下圖:

2、接著第 1 步的保存之后,彈出窗口,選擇 CPU 類(lèi)型。此處根據(jù)實(shí)際情況選取,作者使用的是STMicroelectronics 的 STM32F103RB 系列。如圖所示,我們可以看到右側(cè)顯示了該型號(hào) STM32器件的一些特性,比如 72MHz,128K Flash,20K SRAM……資源都是非常豐富的。 如圖所示:

下圖對(duì)話框:

此處是詢(xún)問(wèn)需不需要給工程添加STM32 的啟動(dòng)代碼(Startup Code),記得此處點(diǎn)選No。
4、至此STM32的工程已經(jīng)新建完畢,可以看到如下界面:

“boot”、“l(fā)ibrary”、“src”、“l(fā)ibrary”。完成后如下圖所示:

(2)在 boot 上點(diǎn)擊右鍵,在彈出的菜單中選擇 “Add File to Group‘boot’...” ,將“MyFirstJob\boot”文件夾中的“cortexm3_macro.s”和“stm32f10x_vector.s”添加進(jìn)來(lái);
(3)依照(2)的方法,給library添加“MyFirstJob\library\src”路徑下的 “stm32f10x_flash.c”、
“stm32f10x_gpio.c”、“stm32f10x_lib.c”、“stm32f10x_rcc.c”四個(gè)文件;
(4)給src 添加“main.c”;
(5)給interrupt 添加“stm32f10x_it.c”;
(6)以上操作完畢之后,應(yīng)該得到如下界面(請(qǐng)?jiān)?font face="Times New Roman">main.c 文件鍵入一個(gè)空 main 函數(shù),如圖所示):
6、右鍵點(diǎn)擊Project 區(qū)的“MyFirstJob”,在彈出的菜單中選擇“Option for Target ‘MyFirstJob’…”,
彈出選項(xiàng)配置界面,如下所示:
7、按下F7(“Build”的快捷鍵),進(jìn)行編譯。應(yīng)該看到如下界面:
最下面的 Build Output 區(qū)是編譯信息框,可以從中獲取編譯信息,如代碼量,錯(cuò)誤和警告信息等,我們可以發(fā)現(xiàn)此次編譯結(jié)果為“0Error(s),1Warning(s)”,即“0個(gè)錯(cuò)誤,1個(gè)警告”,而我們可以看到這個(gè)警告的解釋為:“src\main.c(6):warning: #1-D: last line of file ends without anewline”,這是gcc編譯器一個(gè)很常見(jiàn)的警告,意思是當(dāng)前文件(src\main.c)并不是以一個(gè)空行結(jié)尾(至于這個(gè)空行有什么意義筆者也不清楚),讀者只要在“main.c”的最后加上一個(gè)空行在編譯就可以去掉這個(gè)警告了。
8、一個(gè)完整的STM32 工程至此就完成建立了?梢园l(fā)現(xiàn)“MyFirstJob”文件夾多了幾個(gè)文件,如下圖所示:
可以看到KEIL MDK的工程目錄是很簡(jiǎn)潔的,此處也得益于我們的obj 文件夾和 list 文件夾存放了編譯所生成的大部分文件。但是此工程仍未可以用于進(jìn)行 STM32的開(kāi)發(fā),原因是我們還未對(duì) STM32 的調(diào)試開(kāi)發(fā)工具進(jìn)行設(shè)置,在下一節(jié)里將會(huì)有具體說(shuō)明。
小結(jié)
本節(jié)介紹了 KEIL MDK 開(kāi)發(fā)環(huán)境的特點(diǎn)以及 STM32 開(kāi)發(fā)環(huán)境的建立過(guò)程,一切的 STM32開(kāi)發(fā)應(yīng)用都是從開(kāi)發(fā)環(huán)境的搭建開(kāi)始的。建議讀者多多練習(xí),盡快熟悉STM32 開(kāi)發(fā)環(huán)境的建立,為學(xué)習(xí)下一節(jié)的應(yīng)用程序開(kāi)發(fā)流程做好準(zhǔn)備。
----摘自文件內(nèi)容較多,在此一一謝過(guò)原創(chuàng)作者,本文只供技術(shù)愛(ài)好者參考,非營(yíng)利性質(zhì).
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |