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