一、整體流程
1、獲取ST庫--STM32F10x_StdPeriph_Lib_V3.5.0
2、新建文件夾並加載文件
3、新建工程
4、給工程添加組
5、設置"Target Option"
6、設置J-link選項
二、獲取ST庫
這里用野火光盤提供的"ST庫3.5.0源碼"--STM32F10x_StdPeriph_Lib_V3.5.0,也可以從ST公司的官網下載,下載地址是“http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890”。
三、新建文件夾並添加文件
先新建一個頂層文件夾Template,然后依次建立以下子文件夾。
1、DOC
此目錄存放說明文檔,對程序的一些簡要說明、用法之類,通常放readme.txt。
2、Include
該目錄集中存放頭文件,將下面列出的庫中的頭文件拷貝到這個文件夾下。
STM32F10x_StdPeriph_Lib_V3.5.0/Librarys/CMSIS/CM3/CoreSupport/core_cm3.h
STM32F10x_StdPeriph_Lib_V3.5.0/Librarys/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h以及該目錄下的system_stm32f10x.h。
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc下的所有頭文件,比如說misc.h、stm32f10x_adc.h等。
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h以及該目錄下的stm32f10x_it.h。
3、Libraries
再新建兩個子目錄:CMSIS和FWLIB
①CMSIS
存放ARM公司為cm3內核專一定制的內核文件接口,將下面列出的庫中的文件拷貝到這個文件夾下。
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
再在CMSIS中新建一個子文件夾startup,將下面列出的庫中的文件拷貝到這個文件夾下。
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm所有文件拷到該目錄。
②FWLIB
存放STM32的外設庫,將下面列出的庫中的文件拷貝到這個文件夾下。
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src所有文件。
4、Listing
該目錄是MDK生成信息輸出目錄,存放代碼分布(.map和.lst)。
5、Output
該目錄是MDK生成信息輸出目錄,存放目標文件(.o)、調試文件(.axf)、下載文件(.hex)、依賴文件(.d)等。
6、Project
再新建一個子目錄RVMDK(uv4),將來MDK的工程就建在這個目錄中。之所以這樣處理,是因為可能將來我們會在IAR環境下編譯程序,這個時候只需要在Project目錄下新建一個針對IAR的目錄,就可以方便的切換開發環境。
7、User
存放用戶程序,以后寫程序的文件存放在該目錄,先把庫中的用戶程序添加進來,建立一個完整模板。
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c和stm32f10x_it.c。
8、keilkill.bat
在頂層目錄中,添加MS-DOS批處理文件keilkill.bat。當雙擊這個工具的時候,會將Output目錄中生成的中間目標文件全部刪除,只留下hex文件。
四、新建工程
1、點擊MDK圖標打開軟件
2、Project->New uVision Project,將工程目錄選擇在Template\Project\RVMDK(uv4)
3、選擇芯片為ST公司的STM32F103VE。
4、在新彈出的對話框--詢問是否添加啟動代碼,我們選擇"否"。
五、給工程添加組
1、建立5個分組,分別為STARTUP、SMSIS、USER、DOC、FWLIB。
2、對每個分組雙擊,然后添加文件。
這里只需要添加C文件和匯編文件(其中DOC目錄除外),頭文件不需要添加。通過“六、設置Target Option”,我們可以指定頭文件搜索路徑,來解決這個問題。而且,編譯器會根據*.C文件生成對應的依賴文件。
六、設置Target Option
依次選擇Project->Options for Target ‘Template’
1、Device
Device選擇100腳的STM32F103VE
2、Target
晶振頻率:8 MHz
Use MicroLIB: 使用微庫
片內Flash起始地址:0x8000000
片內Flash大小:0x80000
片內RAM起始地址:0x20000000
片內RAM大小:0x10000
3、Output
Select Folder for Objects: 可以選擇輸出文件夾
Name of Executable: 可執行文件的名字
4、Listing
Select Folder for Listing: 可以選擇生成Lst的文件夾
5、User
如果想生成bin格式的可執行文件,可以在User欄子選項中添加如下語句:
C:/Keil/ARM/BIN40/fromelf.exe --bin -o ../../Output/Template.bin ../../Output/Template.axf
6、C/C++
Define: 預處理宏
STM32F10X_HD 使用的芯片是大容量的
USE_STDPERIPH_DRIVE 為了使用ST庫
Optimization 優化等級
Warngings 警告等級
Include Paths 添加頭文件目錄
compiler control string 可以查看編譯命令
可見頭文件搜索目錄除了系統默認的C:\Keil\ARM\INC\ST\STM32F10x,還包括我們添加的..\..\Include
7、ASM
與C/C++選項配置類似
8、Linker
R/O Base 代碼段和只讀數據段起始地址
R/W Base 數據段起始地址
Linker control string 可以查看連接命令
Don't Search Standard Libraries 完全不使用系統默認提供的庫
9、Debug
Use simulator 軟件仿真
Use cortex-M3 J-LINK 用J-link硬件仿真
10、Utilities(工具)
七、設置J-link選項
在步驟六的第8小步--Debug界面,按下settings,進入J-link配置界面。以下是開發板上電后正常連通時的配置信息。
1、Debug
2、Flash Download
其中Programming Algorithm的Description中需要添加芯片的Flash型號,這樣下載的時候才知道是什么存儲器,下載到哪里,大小多少。
Erase Full Chip 擦除整個Flash
Program 使能編程
Verify 使能核查
Reset and Run 編程完畢后,復位並且運行
參考資料:《STM32庫開發實戰指南》