创建IAR模版工程

前言

如果你用过IAR,用过STM32,那一定会知道创建新STM32工程时有多痛苦,创建空工程,添加group,添加代码,添加宏定义,选择STM32芯片等步骤
每次新建工程,都需要重新来一遍,那有没有更简单的步骤呢?答案是yes!

假设我们需要在IAR中添加一个STM32F4的工程模版,那么所需要的东西如下:

  1. IAR 7.20 For ARM
  2. Win7
  3. STM32F4xx 标准库文件

基本步骤包括

  1. 创建IAR标准模版工程
  2. 把模版放到IAR安装目录(patch)
  3. 修改配置文件

很简单,让我们一步一步来实现这个功能

1 创建IAR标准工程

像平时一样,根据自己的工程管理习惯,用IAR创建一个工程,然后调整代码和相关工程配置项,调试编译通过

特别注意:创建工程时,需要保证IAR工程文件在最顶层目录
工程目录组织结构

创建好的目录如下所示

创建好的IAR工程

2 添加模版工程

接下来,我们需要将标准工程修改为模版工程

  1. 删除Debugsettings目录,某些情况下,还有存在Release目录,请删除
  2. 删除*.dep, *.ewt, *.ewd,*.eww四种IAR工程文件,只保留*.ewp文件
    关于上面5种文件的详细分析,请参考本博客上篇文章IAR工程文件分析
  3. 修改*.ewp文件名为templproj.ewp

至此,修改完成,如下图所示
修改好的IAR工程

3 修改配置文件

接下来,我们将这个模块添加到IAR工程中

  1. 在桌面新建一个临时文件夹,名为tmp
  2. tmp中新建目录STM32,
  3. STM32中新建目录F4xx
  4. 将我们创建的模版工程拷入F4xx目录,如下所示

    1
    2
    3
    4
    5
    6
    7

    └─STM32

    └─F4xx
    │ templproj.ewp
    ├─App
    └─Libs
  5. 进入C:\Program Files\IAR Systems\Embedded Workbench 7.2\arm\config\template\project目录,拷贝C.ENU.projtempl文件到STM32F4xx同级目录,然后修改名字为STM32.ENU.projtempl,F4xx.ENU.projtempl,修改完成后,结构如下所示

    1
    2
    3
    4
    5
    6
    7
    │ STM32.ENU.projtempl
    └─STM32
    │ F4xx.ENU.projtempl
    └─F4xx
    │ templproj.ewp
    ├─App
    └─Libs

特别注意:projtempl的名字一定要和目录名字完全一致,不然IAR找不到对应的文件夹
*.projtempl文件用于展示工程模版的基本信息,比如名字和简介什么的
下面我们分别将两个文件修改为下面样式

1
2
3
4
5
6
<?xml version="1.0" encoding="iso-8859-1"?>
<!--STM32.ENU.projtempl file-->
<templategroup>
<description>STM32 Project template for f0/1/2/4/7 mcu</description>
<displayname>STM32</displayname>
</templategroup>

1
2
3
4
5
6
<?xml version="1.0" encoding="iso-8859-1"?>
<!--F4xx.ENU.projtempl file-->
<templategroup>
<description>STM32 Project template for f4xx mcu</description>
<displayname>F4xx</displayname>
</templategroup>

测试

上面几个步骤,看起来很复杂,但实际操作起来,也挺简单的

下面我们来测试效果,将上面tmp文件中所有文件,拷贝至C:\Program Files\IAR Systems\Embedded Workbench 7.2\arm\config\template\project目录

在IAR中,新建工程,这时便会出现STM32模版工程,如下图所示
选择工程模版

选择STM32,然后选择F4,新建工程,完成后如下图所示,finish
新建的IAR工程

后记

在IAR 7.2上测试时,时常出现不可复现的bug,也许和破解有关系,具体表现为
在显示层次模版目录时,无法显示子目录;UI层次上就是新建IAR工程时,能显示STM32模版,但不能显示F4xx模版信息

暂时无解

规避方案:直接复制IAR模版文件,然后适当修改即可,千万不要重写templproj!!!