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.0\Libraries\STM32F10x_StdPeriph_Driver的inc跟src这两个文件夹拷贝到FWlib文件夹中。
(2)将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_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.0\Libraries\CMSIS\CM3\DeviceSupport\ST\
STM32F10x\startup\iar的全部文件拷贝到STM32-Template\CMSIS\startup(需先在CMSIS新建好startup文件夹)文件夹下。这些是用汇编写的启动文件。根据ST的官方资料:Flash在16 ~32 Kbytes为小容量, 64 ~128 Kbytes 为中容量,256 ~512 Kbytes为大容量,根据使用芯片的容量选用对应的启动文件。这里使用的是STM32F103VCT6,将startup_stm32f10x_hd.s添加到工程中。
(4)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport的core_cm3.c和core_cm3.h也拷贝到STM32-Template\CMSIS文件夹下。
?
有一个地方需要注意:也就是IAR V6.XX 以后的类型定义发生变化。那么这些文件必须复制过来。
C:\ProgramFiles\IAR Systems\Embedded Workbench 6.0\arm\CMSIS\Include\
在这个目录下,复制出来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$\..\xxx\incà\... 指从工程文件(.EWP, .EWW文件)所在目录返回上级目录搜索xxx目录,找到后进入搜素inc文件目录
..? 在文件系统中表示 返回到上级目录。
?
还有一种绝对路径的设置例如:在Preinclude 下可以选择对应的文件位置,然后将对应的位置复制到上面的选项框内。选择完成后,把Preinclude 的内容删除。多个INC 目录时,可以一项一项的填写进去。Additional include .....下面可以写很多行,每一个目录换一行就可以了。如:D:\WorkSpace\SoftWare\MyF4\CMSIS\Include
绝对路径的缺点就是,当你把工程移动到另外一个盘后或者目录,再编译将产生一大堆找不到头文件的错误。
(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了。

基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)的更多相关文章

  1. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  2. ubuntu linux下建立stm32开发环境: GCC安装以及工程Makefile建立

    http://blog.csdn.net/embbnux/article/details/17616809

  3. STM32开发环境--使用MDK建立一个工程

    STM32开发环境--使用MDK建立一个工程 该工程模版是基于库函数基础制作而成,其中有借鉴相关资料.虽然工程模版一旦建立,以后任何项目只需套用即可,但考虑到长时间不使用,在将来某天可能会突然用到,再 ...

  4. Mac下搭建基于PlatformIO的嵌入式开发环境(STM32开发)

    PlatformIO简介 PlatformIO是开源的物联网开发生态系统.提供跨平台的代码构建器.集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等 支持在Windows.Lin ...

  5. 【STM32】基于正点原子『探索者』开发板的烧录

    项目需要一个功能,开发板范例正好有,就买了一块,不过还是有点贵 我手边没有J-Link 用的都是串口烧录 烧录时,先打开右上的开关 如果是仿真器烧录,它无法供电,需要接12V适配器或是杜邦线供电 然后 ...

  6. ubuntu下安装stm32开发环境

    在windowns下开发stm32刚开始学最烦的就是创建工程模板,都不知道为什么要那样设置,而且步骤繁多.现在我告诉大家一个好消息,在linux下配置stm32开发环境包括创建工程,使用JLink仿真 ...

  7. STM32开发(一):简介及开发环境

    1. 背景 STM32是意法(ST)公司开发的基于ARM Cortex-M系列的一系列微控制器(MCU). 有两种库 标准外设库(StdPeriph_Driver.Standard Periphera ...

  8. Step by Step: 基于MFC下的COM组件开发-Helloworld

    http://blog.csdn.net/sybifei/article/details/45008745 [这篇文章有问题, 仅供参考] http://blog.csdn.net/define_us ...

  9. 开发实践丨用小熊派STM32开发板模拟自动售货机

    摘要:本文内容是讲述用小熊派开发板模拟自动售货机,基于论坛提供的工程代码,通过云端开发和设备终端开发,实现终端数据在的华为云平台显示. 本文内容是讲述用小熊派开发板模拟自动售货机,基于论坛提供的工程代 ...

随机推荐

  1. (转)linux下od命令的使用

    linux下od命令的使用 原文:http://blog.csdn.net/shylock_backer/article/details/46473283 名称:od作用:格式化输出文件中的数据提要: ...

  2. SSM Spring SpringMVC Mybatis框架整合Java配置完整版

    以前用着SSH都是老师给配好的,自己直接改就可以.但是公司主流还是SSM,就自己研究了一下Java版本的配置.网上大多是基于xnl的配置,但是越往后越新的项目都开始基于JavaConfig配置了,这也 ...

  3. mysql 存储过程变量及循环的使用

    1.用游标循环 BEGIN -- 定义变量 -- 定义done DECLARE done INT; -- 定义 ammeter_id_bl DECLARE ammeter_id_bl DOUBLE; ...

  4. 安卓下对SD卡文件的读写

    为SD下的操作文件,封装了一些类: package ujs.javawritedata; import java.io.File; import java.io.FileInputStream; im ...

  5. QrenCode : linux命令行下生成二维码图片

    原文链接:http://wowubuntu.com/qrencode.html # 作者:riku/ / 本文采用CC BY-NC-SA 2.5协议授权,转载请注明本文链接. 对于二维码大家应该并不陌 ...

  6. IDEA创建maven项目的web.xml头

    使用IDEA创建maven项目骨架是webapp时,软件自动创建的web.xml文件是2.3版本的,不能使用el表达式,所以可以手动换成4.0的文件头. <?xml version=" ...

  7. python+selenium之处理alert弹出对话框

    注:本篇文章转载 http://www.cnblogs.com/mengyu/p/6952774.html 在完成某些操作时会弹出对话框来提示,主要分为"警告消息框"," ...

  8. wall命令

    wall——发送广播信息 write all /usr/bin/wall 示例1: # wall 输入命令之后回车便可以广播消息,如输入Hello everybody online后Ctrl+D结束并 ...

  9. java面试题(杨晓峰)---第三讲谈谈final、finally、finalize有什么不同?

    java语言有很多看起来相似,但用途却完全不相同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点. 今天我要问你一个基础的java经典题目,谈谈final.finally.finali ...

  10. CF Gym 100187E Two Labyrinths (迷宫问题)

    题意:问两个迷宫是否存在公共最短路. 题解:两个反向bfs建立层次图,一遍正向bfs寻找公共最短路 #include<cstdio> #include<cstring> #in ...