完整教程下载地址:http://forum.armfly.com/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 总结

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

【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)的更多相关文章

  1. 【STM32H7教程】第4章 STM32H7工程模板建立(MDK5)

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第4章   STM32H7工程模板建立(MDK5) 本章 ...

  2. 【STM32H7教程】第13章 STM32H7启动过程详解

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第13章       STM32H7启动过程详解 本章教 ...

  3. 【STM32H7教程】第8章 STM32H7的终极调试组件Event Recorder

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第8章   STM32H7的终极调试组件Event Re ...

  4. 【STM32H7教程】第3章 STM32H7整体把控

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第3章   STM32H7整体把控 初学STM32H7一 ...

  5. 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章       STM32H7的TIM定时器基础知识和H ...

  6. 【STM32H7教程】第31章 STM32H7的USART应用之RS485

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第31章       STM32H7的USART应用之RS48 ...

  7. 【STM32H7教程】第30章 STM32H7的USART应用之八个串口FIFO实现

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第30章       STM32H7的USART应用之八个串口 ...

  8. 【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第29章       STM32H7的USART串口基础知识和 ...

  9. 【STM32H7教程】第18章 STM32H7的GPIO应用之跑马灯

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第18章       STM32H7的GPIO应用之跑马灯 本 ...

随机推荐

  1. A million requests per second with Python

    https://medium.freecodecamp.com/million-requests-per-second-with-Python-95c137af319 Is it possible t ...

  2. Django-CKedtior图片找不到的问题

    从Django Packages站点上找到这个CKeditor集成组件:https://github.com/shaunsephton/django-ckeditor 按照官方的install方法安装 ...

  3. Ubuntu 下命令安装 ZooKeeper

    先去 http://mirrors.hust.edu.cn/apache/zookeeper/ 查看自己想要下载的版本 使用 wget 命令去下载 wget http://mirrors.hust.e ...

  4. Linux基础命令归纳大全

    Linux发行版本:基于linux内核提供桌面环境及办公套件的操作系统 (Linux内核只有一个)   1. 启动终端的快捷键: ctr + alt + t 2. 终端字体放大: ctr+shift+ ...

  5. SOFA 源码分析 — 自动故障剔除

    前言 集群中通常一个服务有多个服务提供者.其中部分服务提供者可能由于网络,配置,长时间 fullgc ,线程池满,硬件故障等导致长连接还存活但是程序已经无法正常响应.单机故障剔除功能会将这部分异常的服 ...

  6. SOFA 源码分析— 事件总线

    前言 大部分框架都是事件订阅功能,即观察者模式,或者叫事件机制.通过订阅某个事件,当触发事件时,回调某个方法.该功能非常的好用,而 SOFA 内部也设计了这个功能,并且内部大量使用了该功能.来看看是如 ...

  7. python笔记:#002#第一个python程序

    第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3​​.x 版本简介 执行 Python 程序的三种方式 解释器 -- python / python ...

  8. 用一张表里的记录更新自己(或另一张表)里的记录(exists使用)

    update jqhdzt set shid=(select shid from v_plat_userjqinfo t where jqhdzt.jqbh=t.JQBH and jqhdzt.shi ...

  9. tomcat第一次使用正常启动后访问8080端口报404错误

    问题:tomcat第一次使用正常启动后访问8080端口报404错误 解决办法:双击tomcat调出tomcat的xml文件页面,Server Locations 默认是选第一行即Use Workspa ...

  10. linux中~/cut/argus/

    1.Linux shell 截取字符变量的前8位 实现方法有如下几种: expr substr "$a" 1 8 echo $a|awk '{print substr(,1,8)} ...