完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980

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

本章教程为大家介绍如何通过IAR下载程序到芯片里面以及IAR的调试和配置方法。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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文件里面内容全部删除,然后整个工程复制进来即可)。

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

 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

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

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

工程名设置为project:

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

创建后的效果如下:

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

默认的情况下这里是创建了两个工程,一个用于Debug,一个用于Release。这两个其实是用的同一个工程,最大的区别是优化等级有所不同。

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

我们这里设置一下,将这两个都删掉,新创建一个Debug方式的,只是仅换了一个名字(主要目的是让大家看下操作方法)。打开菜单Project->EDIT Configration:

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

先新建后再删除其它两个,因为当前IAR使用的一个是无法删除的。

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

点击确定后,再次点击确定:

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

可以看到左上角已经有三个了,这我们选择Flash,将其激活,也就是使用这个:

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

再次打开菜单Project->EDIT Configration就可以将Debug和Release删除掉了:

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

现在左上角就只有一个Flash了:

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

6.4   第3步,设置工程分组名

默认新建的工程是下面这样的:

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

在Workspace栏的空白地方鼠标右击选择Add->Add Group(如果有多个project同时在里面的话,要鼠标左击选中project - Flash,然后右击添加):

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

通过这种方式,我们依次创建如下7个分组:

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

6.5   第4步,添加工程文件

下面我们为各个分组添加上具体的文件。鼠标左击选中BSP,然后右击选择Add->Add Files

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

然后在新建的工程文件夹里面查找需要添加的文件即可。

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

添加BSP分组需要的文件

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

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分组需要的内容

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

system_stm32h7xx.c位于路径\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates,主要用于复位RCC相关寄存器和中断向量表位置设置。

添加Doc分组需要的内容

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

这两个文件位于Doc文件夹,主要用于说明例程的功能和更新记录。

添加EWARMv8分组需要的内容

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

startup_stm32h743xx.s 位于路径\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates\iar,主要用于堆和栈空间设置,中断向量表也在这个文件。

添加HAL_Driver分组需要的内容

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

stm32h7xx_hal_conf.h位于路径\User\bsp,主要用于HAL库的配置。

       其它文件路径:\Libraries\STM32H7xx_HAL_Driver\Src,用到什么外设添加什么驱动文件即可,有些外设驱动跟DMA也有关联,直接添加进来即可。

添加SEGGER/HardFault分组需要的内容

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

这两个文件位于路径:\User\segger\HardFaultHandlerMDK,主要用于硬件异常分析。

添加User分组需要的内容

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

main.c文件位于文件夹User,实现了一个简单的跑马灯效果。

6.6   第5步,保存创建的Workspace

文件添加完毕后要保存Workspace,点击菜单File->Save Workspace As

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

弹出的对话框里面选择路径,设置文件名后,保存即可:

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

剩下就是工程的配置工作了。

6.7   第6步,Options配置

IAR的配置基本都集中在Options对话框里面:

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

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

6.7.1      General Options选项

这部分主要用于通用设置。选择ST的STM32H743XI:

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

Library Configration选择全功能库:

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

Library Options1里面的printf和scanf都选择支持全功能格式:

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

6.7.2      C/C++ Compiler选项

这部分主要用于编译器设置,优化等级选择默认的低优先级:

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

Language 1选择C语言和C11规范(在第9章有介绍):

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

然后就是最重要的头文件路径添加,IAR提供的添加方式都是相对路径:

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

注意,添加的时候要添加相对路径,使用绝对路径的话,工程换个位置就无法使用了:

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

将下面路径都添加进去:

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

同时在预定义宏选项里面添加如下宏定义:

USE_HAL_DRIVER 表示使用HAL库。

STM32H743xx 表示使用H743系列。

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

6.7.3      Build Actions选项

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

这个选项基本用不上,可以不用管,主要是用来指定编译之前和编译之后执行的用户程序。对于本教程配套的例子来说在这里添加了一个批处理功能,用来实现Objects文件夹里面的hex文件复制到路径Project\EWARMv8里面,方便查找。

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

6.7.4      Linker选项

Linker选项主要是链接器的配置,其中最主要的是icf文件配置Flash和RAM区。在HAL库的软件包的路径:\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\iar\linker里面提供了很多配置方式:

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

教程配套例子使用的是stm32h743xx_flash.icf,将这个文件复制到所创建工程的路径\Project\EWARMv8里面。然后在Linker选项里面将其添加进来:

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

添加进来后是个绝对路径:

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

要修改为相对路径:

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

添加进来后要设置下中断向量表首地址,堆和栈大小,点击上面截图左下角的Edit按键进行配置。

中断向量表首地址设置为0x0800 0000:

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

STM32H743XIH的Flash首地址是0x0800 0000,大小0x200000,即2MB。

默认的RAM空间选择DTCM,首地址0x2000 0000,大小0x20000,即128KB。

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

堆和栈大小分别设置为0x1000和0x800:

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

设置完毕后记得点击保存。

6.7.5      Debugger选项

Debugger选项主要用于调试下载,当前IAR支持如下调试工具:

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

具体的调试设置在下一章有详细说明,本章主要是保证创建的工程能够正常编译。

6.8   第7步,最后一步验证是否创建成功

点击全编译:

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

编译结果:0错误,0警告,编译成功。

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

6.9   IAR的字体,多核并行编译,语法提示等设置

这里将IAR经常用到的设置做个说明。

6.9.1      Tab Size设置

教程配套例子的Tab size要设置为4,否则代码显示不整齐。菜单Tools -> Options:

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

6.9.2      字体设置

菜单Tools -> Options,支持比例字体和等宽字体选择:

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

6.9.3      多核并行编译

电脑有几个核都选上,加快编译速度,我这里是四核:

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

6.10 总结

对于初学者来说,务必要实际动手操作一遍,以后移植其它程序代码大有裨益。

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄