3.3 创建工程
本小节以一个简单的DEMO为例,向读者展示如何创建一个工程实例。在介绍之前,应首先从ST公司官方网站获得STM32FXXX系列芯片的驱动库,其官方网址为:http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip。接下来具体介绍操作步骤。
1)启动IAR EWARM,如图3.25所示。
2)单击“File”→“New”→“Workspace”,新建工作空间,如图3.26所示。
3)单击“Project”→“Create New Project”,如图3.27所示。
4)在完成步骤3后,弹出如图3.28所示对话框,选择“Empty project”,并单击“OK”按钮。
5)完成步骤4后,弹出如图3.29所示对话框,读者选择或创建适当的工作路径,并给该工程命名,此处命名为“Demo1”,最后单击“保存”按钮,创建后如图3.30所示。需要注意的是,工程保存路径最好不要包含空格或中文字符。本例程中选择的工作路径为G:\DemoProject\Demo1。
6)给工程创建源文件分类目录,单击“Project”→“Add Group”,如图3.31所示。
7)在完成步骤6后,弹出如图3.32所示对话框,输入源文件分类目录名称,并单击“OK”按钮。
重复步骤6和步骤7,直至创建完所有源文件目录。
注意?IAR EWARM开发环境可创建源文件目录的子目录,当“活动条目”为“创建的工程”时,创建的是根目录,如图3.33所示;当“活动条目”为“源文件目录”时,创建的是与其对应的子目录,如图3.34所示。
创建目录完毕,如图3.35所示。
8)添加源文件。首先将ST公司提供的驱动解压缩,将其中的Librarys文件夹拷贝至G:\DemoProject\Common路径下,如图3.36所示。
将\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM文件夹下的stm32f10x_flash.icf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf、stm32f10x_ram.icf四个文件拷贝至\DemoProject\Demo1目录下,创建工程如图3.37所示。(实际上,仅需要其中一个即可,稍后介绍该文件。)
添加源文件有两种方法:其一,在对应的源文件目录上单击右键,在弹出菜单中选择“Add Files”如图3.38所示;其二,选中源文件目录,然后单击“Project”→“Add Files”。在弹出的对话框中选择相应的源文件,如图3.39所示。
源文件目录中对应的源文件如下:
CMSIS源文件目录:system_stm32f10x.c,位于\DemoProject\Common\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中。
EWARMV6源文件目录:startup_stm32f10x_cl.s,位于\DemoProject\Common\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar中。
StdPeriph_Driver源文件目录:stm32f10x_xxx.c(xxx代表ST公司约定的外设英文缩写),位于\DemoProject\Common\Libraries\STM32F10x_StdPeriph_Driver\src中,读者可根据实际用到的外设添加;或全部添加,只引用需要的头文件。
User源文件目录:main.c、stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h,其中stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h可直接从官方驱动库的例程中拷贝,存放于\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template文件夹中。用户仅需自己创建main.c文件。
9)创建好main.c文件后,在main.c源文件中添加如下代码:
/*
* File name: DemoProject/Demo1/main.c
* Author : Li Zhiming
* IAR EWARM Version: V6.3
* StdPeriph_Driver Version: V3.5.0
* Update Version: V1.0
* Update Date: 08-Aug-2012
*/
/Includes -------------------------------------------------/
#include "stm32f10x.h"
/Private variables ----------------------------------------/
GPIO_InitTypeDef GPIO_InitStructure;
/Private function prototypes -------------------------------/
void GPIOToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
/**
* @brief Main program.
* @param None
* @retval None
*/
int main(void)
{
/ GPIOD Periph clock enable /
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
/ Configure PD0 and PD2 in output pushpull mode /
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_ResetBits(GPIOD,GPIO_Pin_0|GPIO_Pin_2);
/ Infinite loop /
while (1)
{
GPIOToggleBits(GPIOD,GPIO_Pin_0|GPIO_Pin_2);
for(unsigned long i = 0;i<1000000;i++);
}
}
/**
* @brief Toggles the selected GPIO Pin.
* @param GPIOx: Specifies the GPIO Port.
* This parameter can be of following parameters:
* @arg GPIOx
* @param GPIO_Pin: Specifies the Pin to be toggled.
* This parameter can be one of following parameters:
* @arg GPIO_Pin_x
* @retval None
*/
void GPIOToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/ Check the parameters /
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->ODR ^= GPIO_Pin;
}
/END OF FILE*/
添加后的工程如图3.40所示,后续将介绍工程的设置。
10)工程设置。在“Workspace”区域的工程根目录上单击右键,在弹出菜单中单击“Options”,如图3.41所示。
11)单击“Options”后弹出如图3.42所示对话框。
单击左侧列表框中的“General Option”,然后单击“Target”选项卡中“Device”后面的图标,设置处理器类别,根据实际选用的器件选择对应的型号,本工程采用的器件是ST STM32F107VCT6,可按照图3.43进行选择。
12)配置头文件包含路径。图3.42中选择“C/C++ Compiler”,再选择“Preprocessor”选项卡,然后在“Additional include directories”的文本框中输入项目所需索引的头文件地址。该工程基于ST公司官方驱动库,按照官方库的要求,需要在“Defined symbols”中添加预编译条件,“USE_STDPERIPH_DRIVER”表示使用官方驱动库,等同于源程序文本中的“#define USE_STDPERIPH_DRIVER”;“STM32F10X_CL”表示所使用芯片是STM32F10X的互联型微控制器,等同于源程序文本中的“#define STM32F10X_CL”。
配置完成后如图3.44所示。
13)在图3.42中选择“Linker”,再选择“Config”选项卡,勾选“Override Default”复选框,单击文本框右侧的文件选择按钮,在项目根目录中选择要连接配置的文件(例如,若准备将程序在Flash中运行,则选择stm32f10x_flash.icf),配置完成如图3.45所示。
14)选择“Linker”,再选择“List”选项卡,勾选“Generate linker map file”复选框,该选项用于指示生成链接映像文件,该文件主要包含了链接信息、程序起始地址信息、运行模式信息,以及目标文件占用代码、数据和常数空间的大小等,最后给出了在链接过程中出现的警告和错误信息。配置完成后如图3.46所示。
15)选择“Debugger”,在“Setup”选项卡的“Driver”下拉列表中选择仿真器的类型,本教程中使用的是J-Link,因此选中“J-Link/J-Trace”。若要想调试过程中程序从main函数处作为执行起点,则勾选“Run to”,并在下面的文本框中输入main。配置完成后如图3.47所示。
至此,整个工程已配置完毕,选择“Project”菜单中的“Make”,工程进行编译,如图3.48所示。
编译完成后,选择“Project”菜单中的“Download and Debug”,即可开始代码的调试,如图3.49所示。
至此,在IAR EWARM下的工程创建和配置已讲述完毕,关于IAR EWARM开发环境其他选项的设置方法可参考开发环境的帮助手册。本小节仅对工程实现的必要配置进行初步设置。