step1:創建工程目錄及工程文件目錄
a.選擇工程存放的路徑,在路徑下創建工程文件夾 STM32F407VG_Template
b.在工程目錄下創建5個工程文件目錄
AppLayer -- 用於存放應用程序的C文件和頭文件,屬於應用層,與芯片和驅動層無關,完全分離。
DriverLayer -- 傳感器驅動層,提供應用層接口,與應用層分離,可能會用到芯片上的外設,通過對片內外設接口的封裝,也可以做到與芯片層的分離。
OnchipPeripherals -- 片上外設層,對ST庫函數的進一步封裝,該層的函數可以做到只調用官方的庫函數,並對外提供接口來設置外設各項參數。
EWARM -- 包括IAR工程文件相關文件、 ICF 鏈接文件、IAR設置文件、.s匯編啟動文件、Debug調試文件夾。
Libraries -- 包括 CMSIS 核心文件和 HAL 庫的官方文件。
創建完上面五個文件夾之后,就可以往里面添加內容了,這里我們可以直接從之前的CubeMX工程中拷貝過來,目前只需要添加 EWARM 和 Libraries 中的內容。
EWARM
-- IAR工程文件相關文件,這部分文件會在后面創建工程的時候自動生成,不需要用戶主動添加。
-- ICF 鏈接文件,可以直接將CubeMX EWARM 目錄中的兩個 ICF 文件拷貝過來即可。
-- IAR設置文件,也會在后面創建工程的時候自動生成。
-- .s匯編啟動文件, 直接將CubeMX EWARM 目錄中的拷貝過來即可。
-- Debug調試文件夾,用戶自己創建一個空文件夾即可,后面可以在工程中將 Debug 路徑設置為該文件。
Libraries
-- 可以直接將CubeMX Drivers文件下的所有內容拷貝到此文件夾下。
step2:創建IAR工程
打開IAR IDE 8.30 在菜單欄中點擊到 Project彈出選項列表, 點擊選項 Create New Project ,會彈出以下對話框
Tool chain - 工具鏈,默認ARM
Project templates - 工程模板,有asm、C++、C等模板可選,在新建的工程中將會添加對應模板的main文件,如果工程文件要自己編寫的話默認選擇Empty Project.
這里我們選擇 C main
點擊OK后會彈出一個選擇工程存放路徑的對話框,這里我們選擇剛才創建的工程文件目錄 EWARM 來存放IAR工程文件,然后點擊保存
工程創建完成后會在 EWARM 文件夾中生成一個 main.c 文件,Project.ewp IAR工程文件,和一個用於存放IAR配置信息的 settings文件夾其中 Project.ewp 用於打開我們的IAR工程,可以直接通過菜單欄 Project --> Add Existing Project --> 選擇Project.ewp 來打開我們的工程。編譯完成之后還會生成一些其他的工程文件,這里我們不需要關心
但是通過上面步驟打開一個工程未免顯得有些麻煩,這里我們可以按一下 ctrl + s,這是就會提示你選擇保存路徑,這里保存的這個東西,就是快速打開IAR Workspace的專用文件,一般我們還是選擇將該文件保存在 EWARM 文件夾下並取名為 STM32F407_Template,就可以看到生成了一個黑色圖標 IAR IED 文件:
這時候在IAR的Workspace中就可以看到我們剛才創建的工程
到這里就完成了一個最簡單工程的創建,接下來就需要對該工程進行配置並且添加文件
step3: 工程配置
a.選擇芯片
右鍵工程 --> Options --> General Options --> Target --> Processor variant --> Device --> 選擇芯片 ST STM32F407VG
b.設置頭文件路徑
Options --> C/C++ Compiler --> Preprocessor 直接將以下路徑拷貝到 Addinional include directories中
$PROJ_DIR$/../AppLayer
$PROJ_DIR$/../DriverLayer
$PROJ_DIR$/../OnchipPeripherals
$PROJ_DIR$/../Libraries/STM32F4xx_HAL_Driver/Inc
$PROJ_DIR$/../Libraries/STM32F4xx_HAL_Driver/Inc/Legacy
$PROJ_DIR$/../Libraries/CMSIS/Device/ST/STM32F4xx/Include
$PROJ_DIR$/../Libraries/CMSIS/Include
c.添加全局宏
要根據芯片的flash大小添加宏,具體的宏在stm32f0xx.h中有說明,如:STM32F40_41xxx。繼續在上一步的頁面中找到 Defined symbols 項,添加宏
USE_HAL_DRIVER
STM32F407xx
d. 配置輸出文件
Output Converter --> Output 可以設置最終編譯鏈接后輸出的文件類型和名稱。
e.選擇鏈接文件
Linker --> Config --> Linker configuration file 勾選上 Override default 重設默認文件,選擇我們之前從CubeMX過來的 ICF 鏈接文件
f.設置調試輸出文件夾
General Options --> Output
之前我們在 EWARM文件夾下面創建了一個Debug 文件夾,這個文件夾就是用於存放在編譯鏈接過程中生成的一系列文件,這里我們需要將該文件夾設置為生成文件的路徑
g.配置仿真器
Debugger --> Setup --> Driver,選擇自己的仿真器, 這里我們選 ST-LINK
Debugger --> Setup --> Download, 勾選上Verify Download, 開啟下載校驗
h. 還有一些其他的設置,我們可以參照 CubeMX 工程中的設置進行修改
下面列舉了所有新工程和CubeMX工程有差異的配置項,用戶可以根據自己的需要,決定是否修改
step4: 創建工程分組及添加工程文件
a.拷貝 CubeMX工程下 Inc和Src 下的文件到我們新工程的 Applayer 目錄下
b.在 Workspace 中添加工程分組,盡量和我們的工程目錄中的文件夾能對應起來,比如這里我們創建了4個和工程目錄中的文件名稱一樣的4個分組
也可以向CubeMX一樣為 Libraries 再添加幾個二級分組
c.為每個分組添加對應的文件,這里可以參考CubeMX工程中添加的文件
d.至此一個新的工程模板創建就完成了,不同型號的芯片的工程模板創建方法也是類似的,接下來就是編譯,編譯通過后我們就可以將該模板保存下來,后面我們會往該模板中添加外設使用例程,采用三層分離的模式創建一個萬能模板,並且會對其的移植性進行探究。