完整教程下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
第4章 STM32H7工程模板建立(MDK5)
本章教程為大家介紹如何創建MDK5工程,配置方法以及經常用到的一些配置項。
4.1 初學者重要提示
4.2 第1步,創建工程文件夾
4.3 第2步,創建新工程
4.4 第3步,設置工程名和工程分組名
4.5 第4步,添加工程文件
4.6 第5步,Target Options配置
4.7 第6步,最后一步驗證是否創建成功
4.8 MDK的字體,多核並行編譯,語法提示等設置
4.9 總結
4.1 初學者重要提示
- KEIL官方有一個專門的MDK上手文檔mdk5-getting-started,在MDK的安裝目錄里面,壇友翻譯了整個文檔:http://www.armbbs.cn/forum.php?mod=viewthread&tid=31288 。
- MDK5的工程創建過程還是比較重要的,務必實際上手操作一遍。
4.2 第1步,創建工程文件夾
創建一個文件夾,里面包含如下文件(直接將跑馬燈例子的Project文件里面內容全部刪除,然后整個工程復制進來即可)。
- Doc文件夾
用於記錄例程的修改記錄和例子簡介。
- Libraries文件夾
在第一章詳細介紹從官網的下載方法。
- Project文件夾
這個是本章的重點,在這個文件夾里面再建立兩個文件夾,MDK-ARM(uV5)文件夾里面用於存放MDK工程,EWARMv8文件夾用於存放IAR工程,方便以后創建IAR的工程。
- User文件夾
這個是要用戶提供的,開發板已經都提供好,bsp文件夾里面是開發板各個外設的驅動,segger文件夾是硬件異常分析代碼。
- 刪除目標文件.bat
這個是批處理文件,用於刪除MDK和IAR工程編譯后生成的obj和list臨時文件。
4.3 第2步,創建新工程
打開MDK,選擇Project ->New uVision Project:
工程名設置為project:
選擇器件:STM32H743XIHx
點擊OK后彈出如下界面,點擊Cancel取消,當前我們還不使用RTE環境創建,
4.4 第3步,設置工程名和工程分組名
默認新建的工程是下面這樣的:
打開Manage Project Items,雙擊Targer1修改名字為Flash,或者任何其它方便自己管理的名稱,設置完畢后點擊OK。
可以看到已經修改為Flash:
再次打開Manage Project Items,添加如下分組內容:
可以看到左側工程列表已經更新:
4.5 第4步,添加工程文件
添加方法跟第2步,第3步一樣,可以通過Manage Project Items添加:
也可以直接雙擊工程列表里面的分組添加(注意文件類型里面推薦設置為ALL files所有文件):
- 添加User分組需要的文件
main.c文件位於文件夾User,實現了一個簡單的跑馬燈效果。
- 添加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,用於部分系統中斷服務程序。
- 添加MDK-ARM分組需要的內容
startup_stm32h743xx.s 位於路徑\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates\arm,主要用於堆和棧空間設置,中斷向量表也在這個文件。
- 添加HAL_Driver分組需要的內容
stm32h7xx_hal_conf.h位於路徑\User\bsp,主要用於HAL庫的配置。
其它文件路徑:\Libraries\STM32H7xx_HAL_Driver\Src,用到什么外設添加什么驅動文件即可,有些外設驅動跟DMA也有關聯,直接添加進來即可。
- 添加CMSIS分組需要的內容
system_stm32h7xx.c位於路徑\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates,主要用於復位RCC相關寄存器和中斷向量表位置設置。
- 添加SEGGER/HardFault分組需要的內容
這兩個文件位於路徑:\User\segger\HardFaultHandlerMDK,主要用於硬件異常分析。
- 添加Doc分組需要的內容
這兩個文件位於Doc文件夾,主要用於說明例程的功能和更新記錄。
4.6 第5步,Target Options配置
MDK的配置基本都集中在Target Options對話框里面:
4.6.1 Device選項
這個選項不用管,因為我們在創建的時候已經選擇了STM32H743XIHx
4.6.2 Target選項
- 因為我們一般不用軟件仿真,這個選項不用管,也不推薦大家用MDK提供的軟件仿真,問題比較多。
- 選擇編譯器,使用默認的AC5即可。當前AC6支持的還不夠好,僅MDK自家的軟件都支持了,第三方的問題稍多。
- 我們這里使用微庫MicroLib,這個庫針對嵌入式應用,MicroLIB做了深度優化,比使用C標准庫所需的RAM和FLASH空間都大大減小。比如調用:<math.h>,<stdlib.h>,<stdio.h>,<string.h>。
更多這方面的信息可以看KEIL官網:http://www.keil.com/arm/microlib.asp 。
- STM32H7支持雙精度浮點,所以這里選擇Double Precision雙精度浮點。
- STM32H743XIH的Flash首地址是0x0800 0000,大小0x200000,即2MB。
- 默認的RAM空間選擇DTCM,首地址0x2000 0000,大小0x20000,即128KB。
地址0x2400 0000,大小0x80000,即512KB是AXI SRAM的空間。
4.6.3 Output選項
- 用於存放MDK編譯過程中生成的obj臨時文件路徑,MDK在創建的時候已經幫我們創建好文件夾Objects,這里無需修改,使用默認即可。
- Debug Information表示調試信息,選上。
- Create HEX File表示是否生成hex文件,選上。
- Browse Information表示是需要go to def的支持,使用HAL庫話,推薦先不要選上,因為MDK5使用AC5編譯HAL庫時間比較長.
4.6.4 Listing選項
- 用於存放MDK編譯過程中生成的list臨時文件路徑,MDK在創建的時候已經幫我們創建好文件夾Listings,這里無需修改,使用默認即可。
- 是否生成*.lst文件,選上。
- 查看MAP文件要用上,全部選上。
4.6.5 User選項
這個選項基本用不上,可以不用管,主要是用來指定編譯之前和編譯之后執行的用戶程序。對於本教程配套的例子來說在這里添加了一個批處理功能,用來實現Objects文件夾里面的hex文件復制到路徑Project\MDK-ARM(uV5)里面,方便查找。
4.6.6 C/C++選項
- 預定義宏
USE_HAL_DRIVER 表示使用HAL庫。
STM32H743xx 表示使用H743系列。
- 選擇0級優化,優化等級低,方便調試。
- 如何做MDK編譯器的代碼最小優化和性能最佳優化
MDK之前做的應用筆記:http://www.armbbs.cn/forum.php?mod=viewthread&tid=1794 。
選項One ELF Section per Function用於刪除工程中沒有用到的冗余函數。
- 使用C99規范,在第9章有介紹。
- 添加路徑,把用到的頭文件路徑包含進來,點擊最右側的小按鈕,彈出如下界面進行添加即可:
4.6.7 Asm選項
這個選項用不到,不用管。
4.6.8 Linker選項
這個選項用不到,不用管。
4.6.9 Debug選項
- 軟件仿真不推薦大家用,問題比較多。
- 硬件仿真,這里選擇的STLINK,大家根據自己用的那種調試器選擇相應型號即可。
具體的調試設置在下一章有詳細說明,本章主要是保證創建的工程能夠正常編譯。
4.6.10 Utilities選項
這個選項主要用於編程工具選擇,大家根據自己用的那種下載器選擇相應型號即可。
Update Target before Debugging表示調試前更新芯片的程序。
4.7 第6步,最后一步驗證是否創建成功
點擊全編譯:
編譯結果:0錯誤,0警告,編譯成功。
4.8 MDK的字體,多核並行編譯,語法提示等設置
這里將MDK經常用到的設置做個說明。
4.8.1 Tab Size設置
教程配套例子的Tab size要設置為4,否則代碼顯示不整齊:
選擇此圖標:
彈出的窗口里面設置Tab size為4:
4.8.2 使能多核並行編譯
電腦有幾個核,都選上,加快編譯速度。
選擇此圖標:
我這里是四核:
4.8.3 字體設置
推薦大家用下微軟雅黑,而且可以防止復制粘貼的時候出現亂碼問題,字體下載在此貼:http://www.armbbs.cn/forum.php?mod=viewthread&tid=2293 。
安裝微軟雅黑的時候要注意,電腦端默認自帶了一個微軟雅黑,安裝的時候會出現字體是躺着的。
選擇此圖標:
選擇中文簡體:
選擇安裝微軟雅黑字體:
效果如下:
4.8.4 語法提示和語法檢測功能
選擇此圖標:
MDK的語法提示和語法檢測功能還行,大家可以根據需要開啟:
4.9 總結
對於初學者來說,務必要實際動手操作一遍,以后移植其它程序代碼大有裨益。