完整教程下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
第6章 STM32H7工程模板建立(IAR8)
本章教程為大家介紹如何通過IAR下載程序到芯片里面以及IAR的調試和配置方法。
6.1 初學者重要提示
6.2 第1步,創建工程文件夾
6.3 第2步,創建新工程
6.4 第3步,設置工程分組名
6.5 第4步,添加工程文件
6.6 第5步,保存創建的Workspace
6.7 第6步,Options配置
6.8 第7步,最后一步驗證是否創建成功
6.9 IAR的字體,多核並行編譯,語法提示等設置
6.10 總結
6.1 初學者重要提示
IAR的工程創建過程還是比較重要的,務必實際上手操作一遍。
6.2 第1步,創建工程文件夾
創建一個文件夾,里面包含如下文件(直接將跑馬燈例子的Project文件里面內容全部刪除,然后整個工程復制進來即可)。
Doc文件夾
用於記錄例程的修改記錄和例子簡介。
Libraries文件夾
在第一章詳細介紹從官網的下載方法。
Project文件夾
這個是本章的重點,在這個文件夾里面再建立兩個文件夾,EWARMv8文件夾用於存放IAR工程,MDK-ARM(uV5)文件夾里面用於存放MDK工程,方便以后創建MDK的工程。
User文件夾
這個是要用戶提供的,開發板已經都提供好,bsp文件夾里面是開發板各個外設的驅動,segger文件夾是硬件異常分析代碼。
刪除目標文件.bat
這個是批處理文件,用於刪除MDK和IAR工程編譯后生成的obj和list臨時文件。
6.3 第2步,創建新工程
打開IAR,選擇Project ->Create New Project
工程名設置為project:
創建后的效果如下:
默認的情況下這里是創建了兩個工程,一個用於Debug,一個用於Release。這兩個其實是用的同一個工程,最大的區別是優化等級有所不同。
我們這里設置一下,將這兩個都刪掉,新創建一個Debug方式的,只是僅換了一個名字(主要目的是讓大家看下操作方法)。打開菜單Project->EDIT Configration:
先新建后再刪除其它兩個,因為當前IAR使用的一個是無法刪除的。
點擊確定后,再次點擊確定:
可以看到左上角已經有三個了,這我們選擇Flash,將其激活,也就是使用這個:
再次打開菜單Project->EDIT Configration就可以將Debug和Release刪除掉了:
現在左上角就只有一個Flash了:
6.4 第3步,設置工程分組名
默認新建的工程是下面這樣的:
在Workspace欄的空白地方鼠標右擊選擇Add->Add Group(如果有多個project同時在里面的話,要鼠標左擊選中project - Flash,然后右擊添加):
通過這種方式,我們依次創建如下7個分組:
6.5 第4步,添加工程文件
下面我們為各個分組添加上具體的文件。鼠標左擊選中BSP,然后右擊選擇Add->Add Files
然后在新建的工程文件夾里面查找需要添加的文件即可。
添加BSP分組需要的文件
bsp.c 位於路徑\User\bsp,主要用於MPU、Cache、時鍾和外設初始化。
bsp.h位於路徑\User\bsp,此文件是各種頭文件的集中匯總貼,方便管理。
bsp_led.c位於路徑\User\bsp\src,用於LED驅動。
bsp_key.c位於路徑\User\bsp\src,用於按鍵驅動。
bsp_timer.c位於路徑\User\bsp\src,用於軟件定時器組和微妙級單次延遲。
bsp_fmc_io.c位於路徑\User\bsp\src,用於IO擴展,這里LED要用到。
bsp_uart_fifo.c位於路徑\User\bsp\src,用於8串口FIFO驅動。
stm32h7xx_it.c位於路徑User\bsp,用於部分系統中斷服務程序。
添加CMSIS分組需要的內容
system_stm32h7xx.c位於路徑\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates,主要用於復位RCC相關寄存器和中斷向量表位置設置。
添加Doc分組需要的內容
這兩個文件位於Doc文件夾,主要用於說明例程的功能和更新記錄。
添加EWARMv8分組需要的內容
startup_stm32h743xx.s 位於路徑\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates\iar,主要用於堆和棧空間設置,中斷向量表也在這個文件。
添加HAL_Driver分組需要的內容
stm32h7xx_hal_conf.h位於路徑\User\bsp,主要用於HAL庫的配置。
其它文件路徑:\Libraries\STM32H7xx_HAL_Driver\Src,用到什么外設添加什么驅動文件即可,有些外設驅動跟DMA也有關聯,直接添加進來即可。
添加SEGGER/HardFault分組需要的內容
這兩個文件位於路徑:\User\segger\HardFaultHandlerMDK,主要用於硬件異常分析。
添加User分組需要的內容
main.c文件位於文件夾User,實現了一個簡單的跑馬燈效果。
6.6 第5步,保存創建的Workspace
文件添加完畢后要保存Workspace,點擊菜單File->Save Workspace As
彈出的對話框里面選擇路徑,設置文件名后,保存即可:
剩下就是工程的配置工作了。
6.7 第6步,Options配置
IAR的配置基本都集中在Options對話框里面:
6.7.1 General Options選項
這部分主要用於通用設置。選擇ST的STM32H743XI:
Library Configration選擇全功能庫:
Library Options1里面的printf和scanf都選擇支持全功能格式:
6.7.2 C/C++ Compiler選項
這部分主要用於編譯器設置,優化等級選擇默認的低優先級:
Language 1選擇C語言和C11規范(在第9章有介紹):
然后就是最重要的頭文件路徑添加,IAR提供的添加方式都是相對路徑:
注意,添加的時候要添加相對路徑,使用絕對路徑的話,工程換個位置就無法使用了:
將下面路徑都添加進去:
同時在預定義宏選項里面添加如下宏定義:
USE_HAL_DRIVER 表示使用HAL庫。
STM32H743xx 表示使用H743系列。
6.7.3 Build Actions選項
這個選項基本用不上,可以不用管,主要是用來指定編譯之前和編譯之后執行的用戶程序。對於本教程配套的例子來說在這里添加了一個批處理功能,用來實現Objects文件夾里面的hex文件復制到路徑Project\EWARMv8里面,方便查找。
6.7.4 Linker選項
Linker選項主要是鏈接器的配置,其中最主要的是icf文件配置Flash和RAM區。在HAL庫的軟件包的路徑:\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\iar\linker里面提供了很多配置方式:
教程配套例子使用的是stm32h743xx_flash.icf,將這個文件復制到所創建工程的路徑\Project\EWARMv8里面。然后在Linker選項里面將其添加進來:
添加進來后是個絕對路徑:
要修改為相對路徑:
添加進來后要設置下中斷向量表首地址,堆和棧大小,點擊上面截圖左下角的Edit按鍵進行配置。
中斷向量表首地址設置為0x0800 0000:
STM32H743XIH的Flash首地址是0x0800 0000,大小0x200000,即2MB。
默認的RAM空間選擇DTCM,首地址0x2000 0000,大小0x20000,即128KB。
堆和棧大小分別設置為0x1000和0x800:
設置完畢后記得點擊保存。
6.7.5 Debugger選項
Debugger選項主要用於調試下載,當前IAR支持如下調試工具:
具體的調試設置在下一章有詳細說明,本章主要是保證創建的工程能夠正常編譯。
6.8 第7步,最后一步驗證是否創建成功
點擊全編譯:
編譯結果:0錯誤,0警告,編譯成功。
6.9 IAR的字體,多核並行編譯,語法提示等設置
這里將IAR經常用到的設置做個說明。
6.9.1 Tab Size設置
教程配套例子的Tab size要設置為4,否則代碼顯示不整齊。菜單Tools -> Options:
6.9.2 字體設置
菜單Tools -> Options,支持比例字體和等寬字體選擇:
6.9.3 多核並行編譯
電腦有幾個核都選上,加快編譯速度,我這里是四核:
6.10 總結
對於初學者來說,務必要實際動手操作一遍,以后移植其它程序代碼大有裨益。