基于MDK-ARM創(chuàng)建STM32L-DISCOVERY Project
本文只針對(duì)使用MDK-ARM建立軟件開(kāi)發(fā)環(huán)境,并基于STM32L1xx_StdPeriph_Lib_V1.1.1庫(kù)及其Examples,其余情況可參考UM1451 User manual Getting started with software development toolchains for the STM32L-DISCOVERY board
(后續(xù)會(huì)補(bǔ)充一般情況下創(chuàng)建STM32L MDK Project說(shuō)明)
1. 安裝Keil uVision4
2. 下載獲得STM32L1xx_StdPeriph_Lib_V1.1.1.zip壓縮包,解壓到H:STM32L1xx_StdPeriph_Lib_V1.1.1,內(nèi)部目錄結(jié)構(gòu)如下:
(PS:可以詳細(xì)閱讀目錄下的stm32l1xx_stbperiph_lib_um.chm,該文檔有不錯(cuò)的參考價(jià)值)
3. 在H盤(pán)下新建STM32_Project目錄,拷貝H:STM32L1xx_StdPeriph_Lib_V1.1.1ProjectSTM32L1xx_StdPeriph_ExamplesGPIO 目錄到 H:STM32_Project下
4. 進(jìn)入到H:STM32_ProjectGPIOIOToggle 目錄下創(chuàng)建MDK-ARM,并在MDK-ARM目錄下創(chuàng)建objects目錄
5. 打開(kāi)Keil uVision4,點(diǎn)擊Project菜單欄的New uVsion Project ,此時(shí)選擇保存路徑為:H:STM32_ProjectGPIOIOToggleMDK-ARM
6. 按照提示選擇芯片為STM32L152RB
7. 此時(shí)會(huì)提示是否拷貝startup文件到當(dāng)前目錄,選擇YES,此時(shí)將MDK-ARM目錄下的startup_stm32l1xx_md.s 拷貝到上一級(jí)目錄即:H:STM32_ProjectGPIOIOToggle
(這樣做是為了將所有源文件都放在H:STM32_ProjectGPIOIOToggle目錄下,而MDK-ARM目錄只存放MDK所生產(chǎn)的文件)
8. 選中target1,點(diǎn)擊右鍵,選擇Options for Target 'Target1'... 或者按Alt+F7快速打開(kāi)該Options窗口
9. 按照下圖顯示進(jìn)行配置Options for Target 'Target1'
Device選項(xiàng)為創(chuàng)建Project時(shí)選擇的芯片型號(hào),可從該頁(yè)面修改選擇的芯片類型
Target 選項(xiàng)配置如下,由頁(yè)面可以配置了on-chio ROM 和 RAM的地址和大小,還有Xtal頻率,另外勾選了Use MicroLIB ,對(duì)于這個(gè)庫(kù)可參考MDK-ARM的說(shuō)明http://www.keil.com/arm/microlib.asp
Output頁(yè)面可配置編譯輸出文件目錄和輸出信息,點(diǎn)擊select folder for objects,選擇在MDK-ARM目錄下的objects目錄
C/C++配置為最重要的配置,定義了USE_STDPERIPH_DRIVER, STM32L1XX_MD, USE_STM32L152_EVAL symbols,選擇Optimization為L(zhǎng)evel 3(-O3),Warnings為All Warnings,同時(shí)配置Include Paths,否則編譯時(shí)會(huì)找不都相關(guān)頭文件
Debug選擇仿真器為ST-Link Debugger 同時(shí)Protocol為SWD,同時(shí)勾選Run to main()
Utilities 同樣選擇ST-Link Debugger
10. 選中target1,右鍵選擇Manage Components
11. 配置Components,Environment and Books,修改Project Targets 名稱為iotoggle,創(chuàng)建Groups:User、StbPeriph_Driver、CMSIS、STM32152L_EVAL、MDK-ARM、Doc,然后為不同的Groups添加文件:
User 包含H:STM32_ProjectGPIOIOToggle 目錄下的main.c、stm32l1xx_it.c
StbPeriph_Driver包含H:STM32L1xx_StdPeriph_Lib_V1.1.1LibrariesSTM32L1xx_StdPeriph_Driversrc目錄下的所有.c文件
CMSIS包含H:STM32_ProjectGPIOIOToggle 目錄下的system_stm32l1xx.c
STM32152L_EVAL包含H:STM32L1xx_StdPeriph_Lib_V1.1.1UtilitiesSTM32_EVALSTM32L152_EVAL 目錄下的所有.c文件
MDK-ARM包含了H:STM32_ProjectGPIOIOToggle 目錄下的startup_stm32l1xx.md.s
Doc 包含readme.txt
12. 以上配置完成后基本已配置完成,點(diǎn)擊Build Target會(huì)出現(xiàn)以下錯(cuò)誤,此時(shí)選中stm32l152_eval_i2c.ee.c,右鍵選中options for file stm32l152_eval_i2c.ee.c,不勾選Include in Target Build
保存重新編譯,通過(guò)完成,此時(shí)基于STM32L1xx_StdPeriph_Lib_V1.1.1庫(kù)及其Examples 的MDK-Project建立配置完成,另外可以將源文件拷貝到H:STM32L1xx_StdPeriph_Lib_V1.1.1ProjectSTM32L1xx_StdPeriph_Templates目錄下,使用模板project來(lái)運(yùn)行example(暫末嘗試,后續(xù)補(bǔ)充),我這樣創(chuàng)建MDK-Project的目的是為了可以使用subversion來(lái)進(jìn)行版本控制,雖然比起使用template步驟繁瑣,但是對(duì)于了解MDK配置有一定幫助,另外有利于以后創(chuàng)建自己的Porject(一般情況下和不適用lib庫(kù)情況下(均后續(xù)補(bǔ)充))