【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)


完整教程下載地址: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 總結

對於初學者來說,務必要實際動手操作一遍,以后移植其它程序代碼大有裨益。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM