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

    xiaoxiao2022-05-28  185

    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:DemoProjectDemo1。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:DemoProjectCommon路径下,如图3.36所示。

    将STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_TemplateEWARM文件夹下的stm32f10x_flash.icf、stm32f10x_flash_extsram.icf、stm32f10x_nor.icf、stm32f10x_ram.icf四个文件拷贝至DemoProjectDemo1目录下,创建工程如图3.37所示。(实际上,仅需要其中一个即可,稍后介绍该文件。)

    添加源文件有两种方法:其一,在对应的源文件目录上单击右键,在弹出菜单中选择“Add Files”如图3.38所示;其二,选中源文件目录,然后单击“Project”→“Add Files”。在弹出的对话框中选择相应的源文件,如图3.39所示。

    源文件目录中对应的源文件如下:CMSIS源文件目录:system_stm32f10x.c,位于DemoProjectCommonLibrariesCMSISCM3DeviceSupportSTSTM32F10x中。EWARMV6源文件目录:startup_stm32f10x_cl.s,位于DemoProjectCommonLibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupiar中。StdPeriph_Driver源文件目录:stm32f10x_xxx.c(xxx代表ST公司约定的外设英文缩写),位于DemoProjectCommonLibrariesSTM32F10x_StdPeriph_Driversrc中,读者可根据实际用到的外设添加;或全部添加,只引用需要的头文件。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.0ProjectSTM32F10x_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开发环境其他选项的设置方法可参考开发环境的帮助手册。本小节仅对工程实现的必要配置进行初步设置。

    相关资源:STM32嵌入式系统开发指南

    最新回复(0)