《stm32嵌入式系统开发实战指南》一3.3 创建工程

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开发环境其他选项的设置方法可参考开发环境的帮助手册。本小节仅对工程实现的必要配置进行初步设置。

时间: 2024-10-31 15:24:27

《stm32嵌入式系统开发实战指南》一3.3 创建工程的相关文章

《stm32嵌入式系统开发实战指南》一2.2 主要板载资源

2.2 主要板载资源 本节介绍STM32F107微控制器的主要片内外设,着重介绍10/100M以太网接口.CAN总线接口和RS485总线接口. 2.2.1 10/100M以太网接口 1.功能介绍 STM32F107的以太网模块支持通过以太网收发数据,符合IEEE 802.3-2002标准.STM32F107以太网模块灵活可调,能适应各种不同客户的需求.该模块支持两种标准接口连接到外接的物理层(PHY)模块:IEEE 802.3协议定义的独立于介质的接口(MII)和简化的独立于介质的接口(RMII

《stm32嵌入式系统开发实战指南》一导读

前 言 自20世纪90年代,鉴于多任务支持.开发便捷.便于维护等特性,同时能够提高系统的稳定性和可靠性,嵌入式实时操作系统(RTOS)逐渐为广大嵌入式从业人员所接受和认可,越来越多的工程师加入使用RTOS的队伍. 与此同时,半导体技术的快速发展及市场需求的多样化对RTOS提出了更高的要求.一方面,新型处理器的大量涌现要求RTOS自身结构的设计应易于移植,以适应不同硬件架构平台的应用.另一方面,人们在使用RTOS进行系统设计的同时,不仅希望得到供应商的技术支持,而且希望获得RTOS的源代码,以便对

《stm32嵌入式系统开发实战指南》一1.2 Cortex内核系列处理器技术特点

1.2 Cortex内核系列处理器技术特点 1.2.1 ARM Cortex-M系列处理器 ARM Cortex-M3是一种基于ARMv7体系结构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(与冯?诺依曼结构的数据和指令共用一条总线相比,双总线架构使吞吐量得到有效提升).除了使用哈佛结构,Cortex-M3 还具有其他显著的优点:具有更小的基础内核.价格更低.速度更快.与内核集成在一起的是一些系统外设,如中断控制器.总线矩阵.调试功能模块,而这些外设通常都是由芯片制造商增加的

《stm32嵌入式系统开发实战指南》一1.3 STM32互联型嵌入式控制器

1.3 STM32互联型嵌入式控制器 半导体制造厂商意法半导体(ST)是率先推出基于Cortex-M3的32位微控制器系列产品的厂家之一.STM32系列产品所用的微处理器是ARM公司为要求高性能(1.25 DMIPS/MHz).低成本.低功耗的嵌入式应用专门设计的Cortex-M3内核.STM32系列产品得益于Cortex-M3在体系结构上进行的多项改进,所有新功能都同时具有优良的功耗水平.本节着重介绍意法半导体STM32互联型嵌入式控制器的特色及主要的工程应用. STM32互联型嵌入式控制器让

《stm32嵌入式系统开发实战指南》一2.3 硬件设计要点

2.3 硬件设计要点 本节以电路的电磁兼容设计为出发点,简要介绍在硬件开发工程中的注意事项和要点,并讲述了板级电路的信号完整性设计.电源完整性设计一般原则. 2.3.1 电磁兼容问题 电磁兼容性是电子设备或系统的主要性能之一,电磁兼容设计是实现设备或系统规定功能.使系统效能得以充分发挥的重要保证.设计人员必须在设备或系统功能设计的同时进行电磁兼容设计,充分考虑系统.分系统与周围环境之间的相互骚扰. 电磁兼容设计的目的是使所设计的电子设备或系统在预期的电磁环境中实现电磁兼容.最终的设备或系统应能在

《stm32嵌入式系统开发实战指南》一1.1 ARM内核处理器沿革

1.1 ARM内核处理器沿革 ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,1991成立于英国剑桥,该公司主要出售芯片设计技术的授权.人们将采用ARM技术知识产权(IP)核的微处理器称为ARM 微处理器.ARM公司利用独特的商业模式在全球范围内拥有极其广泛的合作伙伴.ARM公司将其技术授权给世界上许多著名的半导体.软件和OEM厂商,每个厂商得到的都是ARM公司提供的一套独一无二的ARM相关技术及服务,这些合作伙伴又保证了大量的开发工具和丰富的第三方资源.利用

《stm32嵌入式系统开发实战指南》一1.4 微控制器选型

1.4 微控制器选型 在项目的最初阶段,首先需要解决的问题是选择适合工程需要的微控制器.通常,选择一款适合工程需求的微控制器,不仅需要考虑成本.主频.硬件接口,还需要考虑是否运行操作系统.配套的开发工具.仿真器,以及工程师对微控制器的经验和软件支持情况等.微控制器选型是否得当对项目开发的进度至关重要,甚至关系项目的成败. 1.4.1 选型因素 (1) 价格及供货保证 芯片的价格和供货是必须考虑的因素.由于许多芯片目前处于试用阶段,其价格和供货处于不稳定状态,所以选型时尽量选择有量产的芯片. (2

《stm32嵌入式系统开发实战指南》一3.1 开发环境及搭建

3.1 开发环境及搭建 3.1.1 常见开发环境 1.ADS1.2 ADS是ARM公司的集成开发环境软件,拥有非常强大的功能.ADS的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级.ADS包括四个模块,分别是:SIMULATOR.C编译器.实时调试器和应用函数库. ADS的编译器与调试器较SDT都有了非常大的改观,ADS1.2提供完整的Windows界面开发环境.ADS1.2的C编译器效率极高,支持C以及C++,使工程师可以很方便地使用C语言进行开发.ADS1.2

《stm32嵌入式系统开发实战指南》一3.2 相关开发工具

3.2 相关开发工具 1.JTAG调试仿真器 支持ARM7/ARM9,支持自动检测和手动指定内核. 使用RDI接口,支持SDT.ADS.RealView和IAR. 支持ADS1.2.SDT2.51和RealView. 支持单个硬件断点或者数量不限的软件断点. 支持ARM/THUMB模式. 支持LITTLEENDIAN和BIGENDIAN. 支持SEMIHOSTING. 支持WIGGLER SDTJTAG和自定义接口. 2.H-JTAG调试代理 H-JTAG是一个免费的ARM调试代理,这个程序没有