历史上的今天
今天是:2024年08月27日(星期二)
2019年08月27日 | 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)
2019-08-27 来源:eefocus
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 位于路径Userbsp,主要用于MPU、Cache、时钟和外设初始化。
bsp.h位于路径Userbsp,此文件是各种头文件的集中汇总贴,方便管理。
bsp_led.c位于路径Userbspsrc,用于LED驱动。
bsp_key.c位于路径Userbspsrc,用于按键驱动。
bsp_timer.c位于路径Userbspsrc,用于软件定时器组和微妙级单次延迟。
bsp_fmc_io.c位于路径Userbspsrc,用于IO扩展,这里LED要用到。
bsp_uart_fifo.c位于路径Userbspsrc,用于8串口FIFO驱动。
stm32h7xx_it.c位于路径Userbsp,用于部分系统中断服务程序。
添加CMSIS分组需要的内容

system_stm32h7xx.c位于路径LibrariesCMSISDeviceSTSTM32H7xxSourceTemplates,主要用于复位RCC相关寄存器和中断向量表位置设置。
添加Doc分组需要的内容

这两个文件位于Doc文件夹,主要用于说明例程的功能和更新记录。
添加EWARMv8分组需要的内容

startup_stm32h743xx.s 位于路径LibrariesCMSISDeviceSTSTM32H7xxSourceTemplatesiar,主要用于堆和栈空间设置,中断向量表也在这个文件。
添加HAL_Driver分组需要的内容

stm32h7xx_hal_conf.h位于路径Userbsp,主要用于HAL库的配置。
其它文件路径:LibrariesSTM32H7xx_HAL_DriverSrc,用到什么外设添加什么驱动文件即可,有些外设驱动跟DMA也有关联,直接添加进来即可。
添加SEGGER/HardFault分组需要的内容

这两个文件位于路径:UserseggerHardFaultHandlerMDK,主要用于硬件异常分析。
添加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文件复制到路径ProjectEWARMv8里面,方便查找。

6.7.4 Linker选项
Linker选项主要是链接器的配置,其中最主要的是icf文件配置Flash和RAM区。在HAL库的软件包的路径:DriversCMSISDeviceSTSTM32H7xxSourceTemplatesiarlinker里面提供了很多配置方式:

教程配套例子使用的是stm32h743xx_flash.icf,将这个文件复制到所创建工程的路径ProjectEWARMv8里面。然后在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 总结
对于初学者来说,务必要实际动手操作一遍,以后移植其它程序代码大有裨益。
史海拾趣
|
近日,飞利浦汽车照明在广州国际照明展上,展示了其最新技术成果及研究方向。 作为汽车照明的全球领袖,飞利浦的一举一动都让人关注。在这次展会上,飞利浦全方位的展示了其所驾驭汽车照明领域的各项技术,除了汽车头灯以外,产品系列涵盖了汽 ...… 查看全部问答> |
|
1.这是一款浙江地区生产的摇摇棒成品电路图,根据实物绘出,单片机型号打磨掉了。 此款产品附带软件,可以在电脑上很方便的更改文字或者图片(COM口),10来元的产品,还算超值。 … 查看全部问答> |
|
本信息来自合作QQ群:AVR单片机学习与交流群(17727270) 群管理员在坛子里的ID:铜河 哪个片内AD转换的电压数值跳动很大,怎么处理下… 查看全部问答> |
|
开发了一款软件,可是开发的时候模拟器的分辨率是640X480的,但最后公司拿来的硬件分辨率是320x240的,软件运行后只显示一个角,怎么办呢?… 查看全部问答> |
|
遇到的问题,我加入一个驱动,执行到oeminit done就死了。 之后恢复到原来没有加入驱动之前的,仍然不行。重新编译也不行,重新安装wince,不行。 重新安装windows,不行。太奇怪了。哪位朋友了解的话,能否回复介绍一下?谢谢了。… 查看全部问答> |
|
基于CAN控制电机转速——只用两个按键就可以实现电机的正反转 经过一段时间的学习,终于把CAN基本的东西给搞定,还有许多东西还要去学,在此先发一部分这段时间的学习内容,希望高手拍砖,让讨论抵御这大冷的冬天!! 在刚开始申请板子的时候是想采用232通信来完成电机的控制,但是拿到板子后发现该板子有好多 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:05 编辑 我的12864液晶屏不知道怎么的当显示“学”“电”时候就会出现一块黑点,字也显示不出来,求大侠赐教啊,其他的字都能正常显示,目前就发现这两个字显示不出来,就一块黑的。 … 查看全部问答> |
|
以前想了想,下午推导半天,开始想着占空比肯定与正弦波的相位有关,但是推导过后发现,占空的式中没有正弦波的影子。不知道是对是错,请大家指出。 注,推导适用于断续及临界模式。 [ 本帖最后由 dontium 于 2012-3-24 23:5 ...… 查看全部问答> |
|
美国某知名上市公司招聘资深DSP软件工程师,工作地点在上海,要求有TI DSP音频算法经验以及TI OMAP和双核SoC软件开发经验,如有Linux的研发经验更好,年薪15-25W,如有兴趣,可以加qq447801729,或者msn帐号anqingqianjing2008@hotmail.com。… 查看全部问答> |




