zoukankan      html  css  js  c++  java
  • 基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)

    IAR和keil两个开发平台都是arm开发当中比较流行的平台,keil4的版本之间,可以兼容,但是版本4和版本5还是不兼容的,但是IAR的兼容性更加差,好像6.30.x之间是能够兼容的吧,没有实测过,以下是网上摘录的,根据其一步步,笔者实际测试成功,只是有一点小小的不一样需要更改。

    ==================================================

    第一步 建立工程

    首先建立一个工程,命名选择路径保存

    文件名可以随便取
    第二步加载文件
    在工程路径下新建三个文件夹,分别为FWlib、CMSIS、USER。
    新建的USER用来存放工程文件和用户代码,包括主函数main.c。 FWlib用来存放STM32库里面的inc和src这两个文件,这两个文件包含了芯片上的所有驱动。CMSIS用来存放库为我们自带的启动文件和一些M3系列通用的文件。
    (1)将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver的inc跟src这两个文件夹拷贝到FWlib文件夹中。
    (2)将STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template下的 main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c 、system_stm32f10x.c(不要) 拷贝到USER目录下。 stm32f10x_it.h、和stm32f10x_it.c这两个文件里面是中断函数,里面为空,并没有写任何的中断服务程序。stm32f10x_conf.h是用户需要配置的头文件,当我们需要用到芯片中的某部分外设的驱动时,我们只需要在该文件下将该驱动的头文件包含进来即可,片上外设的驱动在src文件夹中,inc文件夹里面是它们的头文件。这三个文件是用户在编程时需要修改的文件,其他库文件一般不需要修改。system_stm32f10x.c是ARM公司提供的符合CMSIS标准的库文件,我们把这个文件移动到CMSIS这个文件夹中。
    (3)将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportST
    STM32F10xstartupiar的全部文件拷贝到STM32-TemplateCMSISstartup(需先在CMSIS新建好startup文件夹)文件夹下。这些是用汇编写的启动文件。根据ST的官方资料:Flash在16 ~32 Kbytes为小容量, 64 ~128 Kbytes 为中容量,256 ~512 Kbytes为大容量,根据使用芯片的容量选用对应的启动文件。这里使用的是STM32F103VCT6,将startup_stm32f10x_hd.s添加到工程中。
    (4)将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport的core_cm3.c和core_cm3.h也拷贝到STM32-TemplateCMSIS文件夹下。
    ?
    有一个地方需要注意:也就是IAR V6.XX 以后的类型定义发生变化。那么这些文件必须复制过来。
    C:ProgramFilesIAR SystemsEmbedded Workbench 6.0armCMSISInclude
    在这个目录下,复制出来3 个文件即可。放到CMSIS的文件夹下面。
    core_cm3.h,core_cmFunc.h,core_cmInstr.h //
    ?
    建立好工程后预,建立Group,然后分类在各个group里增加源文件.

    第三步 设置编译环境

    在左边的工程窗口,右击选择工程选项,进入Options..。或者”Project”->”Options..”


    1. General Options

    (1)Target

    选择使用的芯片型号
    (2).Lib选项卡
    自己根据需要,如果需要用到像printf一类函数的就需要设置成full,否则选none。


    2.C/C++Complier选项卡

    在这里可以设定编程语言、优化等级等等设置。这里只设定Preprocessor,其他的保持默认即可。

    (1) 设置包含头文件路径
    下面解释下头文件的包含问题:
    $PROJ_DIR$ :表示在工程文件所在目录
    $PROJ_DIR$..xxxincà... 指从工程文件(.EWP, .EWW文件)所在目录返回上级目录搜索xxx目录,找到后进入搜素inc文件目录
    ..? 在文件系统中表示 返回到上级目录。
    ?
    还有一种绝对路径的设置例如:在Preinclude 下可以选择对应的文件位置,然后将对应的位置复制到上面的选项框内。选择完成后,把Preinclude 的内容删除。多个INC 目录时,可以一项一项的填写进去。Additional include .....下面可以写很多行,每一个目录换一行就可以了。如:D:WorkSpaceSoftWareMyF4CMSISInclude
    绝对路径的缺点就是,当你把工程移动到另外一个盘后或者目录,再编译将产生一大堆找不到头文件的错误。
    (2) 芯片类型的预处理
    在Defined sysbols 下面,把对应芯片的相关选项填写好。以STM32F103VC 为例,由于STM32固件的要求,必须填写两项
    USE_STDPERIPH_DRIVER
    STM32F10X_HD
    ?
    3. 配置输出文件
    在Output Converter 选项中,将产生输出选择上。并选择输出格式。
    Motoroal 是摩托罗拉格式,可以生成.MOT 文件,V6.3 的产生的是.srec 文件。
    Intel extended 是英特尔格式。可以生成HEX 文件
    Binary 是二进制格式。可以生成.bin 文件
    摩托罗拉格式和英特尔格式是不一样的。这和数据格式有关。
    一个是小端格式。一个是大端格式。具体的请查找数据格式的说明。


    4. 配置仿真器

    在Debugger 下面可以选择多种仿真器。本例以J-Link 为例
    ?


    本例采用J-Link 并且采用SWD模式。所以必须选择对应的SWD模式。
    该模式下,只需要2 根线就可以仿真了。加上电源和地共4 根线。电路可以最简单。


    第四步 修改main.c文件

    因为刚刚我们的main.c文件是从官方库里面复制过来的,里面有许多的东西我们是不需要的,为了简化main.c文件,我们将修改如下。

    ======================================================================

    我用的是6.30.4的iar ewarm,和上文的描述有一点不一样, 1,把core_cm3.h,core_cmFunc.h,core_cmInstr.h去掉,删除。 2,在Project -> Options -> General Options -> Library Configuration -> Use CMSIS,右下角的选项中选择 use CMSIS 这样编译就通过了,可能是IAR当中内置cmsis了。

  • 相关阅读:
    legend3---图片裁剪实例代码
    JPG 和 JPEG 格式有什么区别
    jpg与png图片的优缺点
    心得体悟帖---200320(legend3它的真实意义,在于资质提升,一举多得)
    心得体悟帖---200320(觉得录课录不下去了,可以去招聘市场找找激励,这个真的特别有效)
    心得体悟帖---200320(我必不甘于人之下,所以还是得自己干,自己好好录课)
    ES6参考---Promise对象
    范仁义js课程---70、sort方法
    JS实现异步编程的4种方法(总结)
    JS执行机制详解
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/9750288.html
Copyright © 2011-2022 走看看