您的位置:首页 > 其它

基于IAR的STM32v3.5库工程建立

2016-07-24 18:18 295 查看

基于IAR6或者IAR7建立STM32开发工程

第一步 建立工程

  首先打开IARWmbeded Workbench,”Project”à”Creat New Project”建立一个工程,命名选择路径保存





文件名可以随便取

第二步加载文件

在工程路径下新建三个文件夹,分别为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文件,我们将修改如下。

/********************(C) COPYRIGHT 2012 xxxxxxx**************************
* 文件名 :main.c
* 描述 :
* 实验平台:
* 库版本 :ST3.5.0
*
* 作者 :
**********************************************************************************/
#include "stm32f10x.h"

/*
* 函数名:main

* 描述 : 主函数
* 输入 :无
* 输出 : 无
*/
int main(void)
{
while(1);
/* Add your application code here
*/
}
/******************* (C) COPYRIGHT 2012 xxxxx************/


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: