作者:燕山大学鲁信琼
本文说明如何在Windows XP操作系统上,使用IAR Embedded Workbench for ARM 5.30建立一个IAR项目,并且配置STM32开发环境。
一、生成一个新项目
要使用IAR进行STM32嵌入式系统开发,必须从建立一个项目(project)开始,下面以在E:\下建立一个名为Example的项目为例介绍。
1. 创建项目目录、复制公共文件
(1)在E盘下创建名为的Example文件夹,即项目根目录为E:\Example。
(2)在项目根目录下建立一个EWARMv5文件夹用于存放项目文件、工作空间文件和项目配置相关文件。
(3)解压标准外设驱动文件库(stm32f10x_stdperiph_lib_V3.1.2.zip),将其中的“Libraries”文件夹复制到Example目录下。
(4)复制标准外设驱动库目录Project\Template下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件到Example文件夹下。main.c可以不用复制,我们自己写。
复制标准外设驱动库目录Project\Template\EWARMv5下的stm32f10x_flash.i cf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf和stm32f10x_ram.icf到Examp le\EWARMv5文件夹下。
复制好的目录如图1所示。
图1. Example文件夹下的文件
2. 创建新的工作空间
嵌入式系统开发大都是面向项目(Project)的,需要建立Project来管理项目开发。IAR EWRAM又是基于工作空间(Workspace)的集成开发环境,Project必须放在工作空间里面,所以我们首先应该建立工作空间。一个工作空间里面可以放多个项目。
开始→程序→IAR Systems→IAR Embedded Workbench,进入IDE环境。File →New→Workspace。
这样工作空间就建好了,但是这个工作空间里面还没有项目,所以还不能保存,下面将在这个工作空间里面建立新项目。
3. 创建新项目
在上面第2步已经建立好的工作空间里创建新项目。
Project→Create New Project。弹出“Create New Project”对话框,“Tool C hain”选择ARM,“Project Template”选择Empty project模板,这样所有的文件都由用户自己来写。点击OK,弹出“另存为…”对话框,选择我们刚刚建好的E xample目录下的EWARMv5文件夹下,然后输入工程名,这里我输入Template,然后点击保存。这样一个名为Template的IAR EWARM项目就建好了,下面我们添加一些文件,然后再修改一些参数,使得这个项目真正地能够使用。
4. 添加文件到项目
(1)文件分组
按说现在就可以往项目里面添加文件了,但是由于ARM系统开发涉及文件较多,类型繁杂,加上我们使用ST公司的标准固件库驱动文件,这样就要添加很多文件到项目里,随着项目的复杂程度加大,文件的数量是很多的。为了便于管理,我们将这些文件在项目里分组保存,IAR EWARM支持文件分组。
在IDE左侧的Workspace里面,我们在刚刚建立的Template项目上点右键,选择Add→Add Group…。在弹出的对话框里面输入组名(Group Name),点OK 即可。我们将添加如下几个组,如图2所示。
从图2可见,项目名字后面有个星号(*),这是说明项目或工作空间已经修
改,但是还没有保存,现在点File→Save All,这时弹出对话框让我们保存工作空间。还记得工作空间吗?第2步我们新建的工作空间,但是当时没有保存,因为当时工作空间里面没有项目,不能保存。输入工作空间名Template,然后点保存,这时候项目后面的星号*消失。
注:工作空间扩展名.eww,项目扩展名.ewp
图2. Template项目分组情况
(2)向项目中添加文件
在具体的分组上点右键→Add→Add File…,增加文件的情况如图3所示。
图2. Template项目增加文件情况
这些文件的路径在:
CMSIS下的core_cm3.c和system_stm32f10x.c位于
Example\Libraries\CMSIS\Core\CM3
EWARMv5下的startup_stm32f10x_hd.s位于
Example\Libraries\CMSIS\Core\CM3\startup\iar
StdPeriph_Driver下的文件位于
Example\Libraries\STM32F10x_StdPeriph_Driver\src
User下的文件位于:\Example
注意:增加文件的时候只要增加.s和.c文件即可,不用增加.h文件,但是细心地同学可能发现在User下我增加了stm32f10x_conf.h文件,这里先不要管,以后我再说明为什么。
(3)向项目中添加main文件
我们增加的这些文件都是标准固件驱动库里面的和ST公司提供的模板里面的文件,我们连一句代码还没写过。使用固件驱动库编写程序我们主要任务就是编写main文件和一些外围用户驱动文件。现在我们就着手建一个main.c文件,并把它加到User组中。
File→New→File,建立一个空文件;File→Save,将文件存为main.c,存到\E xample下。同样我们将它加到User组中。
main.c文件有如下的一般模板格式。
5. 修改参数
标准外围固件库是一个通用库文件,适合于所有的STM31F10x系列微控制器,这也就是说我们在具体应用其中某一款的时候一定要在项目中进行特定配置。针对我们的实验板,使用STM32F103ZCT6微控制器,我们作如下配置。
在左侧的项目名称上点右键(或者快捷键ALT+F7),在弹出的快捷菜单中选择Option命令,打开项目配置对话框,具体配置如下。
(1) General Options
在Processor variant中选择Device ST STM32F10xxC。如图3.
图3. General Options选项配置—选择微控制器类型
(2) C/C++ compiler
将标签切换到Preprocessor,在Additional include directories里面添加如下三行(必须一行一个):
$PROJ_DIR$\..\
$PROJ_DIR$\..\Libraries\CMSIS\Core\CM3
$PROJ_DIR$\..\Libraries\STM32F10x_StdPeriph_Driver\inc
在Defined Symbols里面输入如下两行(必须一行一个):
USE_PERIPH_DRIVER
STM32F10X_HD
其他选项保持默认,不需要修改,设置完成的界面如图4所示。
图4. C/C++ compiler选项配置界面(其他选项卡保持默认)
(3) Linker
选择Config选项卡,选中“Override default”复选框,在下面的文本框中输入“$PROJ_DIR$\stm32f10x_flash.icf”,其他选项卡保持默认,如图5所示。
图5. Linker选项配置界面(其他选项卡保持默认)
(4) Debugger
选择“setup”选项卡,在Driver选型下选择RDI;
选择“Download”选项卡,勾上“Verify download”和“Use flash loader”。其他选项保持默认,配置完界面如图6所示。
(5) RDI
“Manufacture RDI driver”中选择H-JTAG安装目录下的H-JTAG.dll文件。
其他保持默认,配置完成界面如图7所示。
至此,完整的工程建立完毕。
图6. Debugger选项配置界面
图7. RDI选项配置界面
二、编写、编译程序
1. 编写用户程序
双击工程文件列表中的main.c文件,在模板中编写程序。
2. 编译程序
点击Project Make(或者快捷键F7),如果程序没有语法错误,则编译通过。Message窗口提示0个错误,0个警告,如图8所示。
图8. 程序编译通过Message窗口输出信息界面