配色: 字号:
STM32固件V35建立最新版IAR和KEIL都能使用的工程
2012-09-11 | 阅:  转:  |  分享 
  
文件版本:V012012-3-2

第1页/共14页

使用STM32固件V3.5建立IARV6.3工程及配置

和建立MDK4.23工程及配置目录

一、版本名称和来源.....................................................................................................................2二、固件的更新说明.....................................................................................................................2三、STM编译说明........................................................................................................................2

四、IARV6.3的升级问题处理....................................................................................................2五、IAR建立工程的方法............................................................................................................34.1建立工程............................................................................................................................3

4.2选择芯片............................................................................................................................44.3配置头文件........................................................................................................................54.4芯片类型的预处理............................................................................................................5

4.5配置输出文件....................................................................................................................64.6配置仿真器........................................................................................................................74.7加载文件............................................................................................................................7

4.8头文件的加载....................................................................................................................84.9加载源代码........................................................................................................................9六、MDK4.23的工程建立.........................................................................................................10

5.1建立工程..........................................................................................................................105.2选择芯片..........................................................................................................................105.3增加文件夹......................................................................................................................1

5.4添加文件..........................................................................................................................125.5配置工程..........................................................................................................................125.6编译预处理......................................................................................................................13

5.7配置仿真器......................................................................................................................14七、MDK4.23的编译问题处理.................................................................................................14

文件版本:V012012-3-2

第2页/共14页

一、版本名称和来源IARV6.3目前是最新版本

名字:CD-EWARM-6301-3142具体下载地址不记得了,可以通过名字在网上找到。注册机也可以找到。用V5.4版本的注册机也可以产成注册码。

KEILKKKMDKKKK4.23下载地址:目前是最新版本htp:/bbs.eetop.cn/viewthread.php?tid=318399&extra=&page=1注册机也可以在网上找到。

STM32固件V3.5名字:stm32f10x_stdperiph_lib在ST的官网上可以找到。版本信息为V3.5更新日期2011-3-1二、固件的更新说明

具体说明,在ST官网上可以下载。都是些细微的变化,有新增一个CEC库。在论坛上面有人说V3.5版本的SDIO好像有问题。但我没有试过。不知道是否真的有问题?三、STM编译说明

STM32的编译顺序是:首先从startup_stm32f10x_hd.s启动。并利用misc.h的向量表格。将芯片的固定向量规划出来。这样就有了复位和各个中断的固定向量。在复位的向量中调用了SystemInit(在system_stm32f10x.c文件中),对芯片进行各种初始设

定。慢慢的引伸出来其它程序。stm32f10x_it.c就是典型的一个应用。由固定向量产生的地址,然后再转移到这个程序。这个文件里面放着被应用到的中断服务程序。当然,中断服务程序也可以被转移到其它程序中去。也就是stm32f10x_it.c这个文件也是可有可无的。因为

固定向量表已经把相关的向量名字定义好了,任何一个程序只需要把对应的向量名字引用过去。就可以连接到对应的固定向量。而core_cm3.c则放着与数据类型和芯片编译特性相关的一些内容。该文件同时调用了

core_cmFunc.h和core_cmInstr.h这些都是和芯片特性、指令相关的内容。在初始化完成后,将调用main函数。这样就进入了用户程序。四、IARV6.3的升级问题处理

IARV5.XX升级到V6.XX以后,会出现编译不能通过。将出现"__interwork__softfp----信息。出现该问题的原因是IARV6升级后,编译器的类型定义发生了变化。原来使用的类型

定义不能使用了。网站上有些方法建议我在编译选项中,选择内部的UseCMSIS。如下图

文件版本:V012012-3-2

第3页/共14页

这个方法,不是很好。1、采用该方法后,程序中带有#include"core_cm3.h"的地方,还是会找原来的路径,如果把对应的文件删除,就必须指定路径。很麻烦。

2、采用该方法后,如果想再建立KEIL的工程,又没有这些文件可以使用。实际上,IARV6.XX以后,在安装目录下有对应的CMSIS文件C:\ProgramFiles\IARSystems\EmbeddedWorkbench6.0\arm\CMSIS\Include\

在这个目录下,将以下3个文件复制出来即可。后面我会再讲一个如果建立工程的方法.把这些文件放到Sysinc目录下。在工程中,只需要加载这几个文件即可。而且这样处理以后,无论是采用无论是采用无论是采用无论是采用IAR来建立工程还是采用还是采用还是采用还是采用KEIL来建立工程都可以直接使用直接使用直接使用直接使用。在两种平台上

可以自由切换自由切换自由切换自由切换!注意:生成工程时,请取消注意:生成工程时,请取消注意:生成工程时,请取消注意:生成工程时,请取消UseCMSIS选项。否则将报错!选项。否则将报错!选项。否则将报错!选项。否则将报错!core_cm3.h

core_cmFunc.hcore_cmInstr.h五、IAR建立工程的方法

4.1建立工程建立工程建立工程建立工程打开IAR软件,如下图所示,建立工程,本例以STM32F103ZC为例。

文件版本:V012012-3-2

第4页/共14页

选择OK后,进入创建选择好路径,并建立对应的文件名称。

在左边的工程窗口,右击选择工程选项,进入Options..4.2选择芯片选择芯片选择芯片选择芯片

选择Device在点击右边的选择,打开芯片列表选择ST,再选择STM32F10XXC

文件版本:V012012-3-2

第5页/共14页

4.3配置头文件配置头文件配置头文件配置头文件如下图所示,在Preinclude下可以选择对应的文件位置,然后将对应的位置复制到上面的选

项框内。选择完成后,把Preinclude的内容删除多个INC目录时,可以一项一项的填写进去。

Additionalinclude.....下面可以写很多行,每一个目录换一行就可以了。

4.4芯片类型的预处理芯片类型的预处理芯片类型的预处理芯片类型的预处理在Definedsysbols下面,把对应芯片的相关选项填写好。以STM32F103ZC为例,由于STM32

固件的要求,必须填写两项USE_STDPERIPH_DRIVERSTM32F10X_HD

文件版本:V012012-3-2

第6页/共14页

4.5配置输出文件配置输出文件配置输出文件配置输出文件在OutputConverter选项中,将产生输出选择上。并选择输出格式。

Motoroal是摩托罗拉格式,可以生成.MOT文件,V6.3的产生的是.srec文件。Intelextended是英特尔格式。可以生成HEX文件Binary是二进制格式。可以生成.bin文件

摩托罗拉格式和英特尔格式是不一样的。这和数据格式有关。一个是小端格式。一个是大端格式。具体的请查找数据格式的说明。

文件版本:V012012-3-2

第7页/共14页

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

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

4.7加载文件加载文件加载文件加载文件首先建立一些文件夹,如下图所示。增加文件夹

文件版本:V012012-3-2

第8页/共14页

左图是已经建好文件夹,并放入了对应文件的示意图我推荐建立5个文件夹。这样的管理看上去很清析!DOCOOO放一些说明文档,如版本说明等等。也可省略不用。

Startup放启动文件,本例加载startup_stm32f10x_hd.s\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar(注意必须是IAR目录)STLib放STM32的固件,在对应的文件夹下把有用到的程序加载到编译器里面来。

Syssrc放系统的源代码内容有system_stm32f10x.c,core_cm3.c,stm32f10x_it.csystem_stm32f10x路径:这个文件在STM32固件目录下Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\

core_cm3.c路径:这个文件在STM32固件目录下\Libraries\CMSIS\CM3\CoreSupportstm32f10x_it.c路径:这个文件在STM32固件的工程目录下

STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Examples\CortexM3\Mode_PrivilegeUsesrc放用户的源代码

4.8头文件的加载头文件的加载头文件的加载头文件的加载Syssrc和Usesrc,还应该建立一个对应的INC目录,但这两个目录不需要添加到工程里面

文件版本:V012012-3-2

第9页/共14页

来,只要配置好查找路径,系统会自动查找的。前面已经讲过如何添加头文件路径。但有一个地方需要注意:也就是IARV6.XX的类型定义发生变化。那么这些文件必须复制过来。C:\ProgramFiles\IARSystems\EmbeddedWorkbench6.0\arm\CMSIS\Include\

在这个目录下,复制出来3个文件即可。放到Sysinc的文件夹下面。core_cm3.h,core_cmFunc.h,core_cmInstr.h在Sysinc的文件夹,还有几个文件也要放进来。stm32f10x.h,system_stm32f10x.h,

stm32f10x_conf.h,stm32f10x_it.h,stm32f10x和system_stm32f10x路径:\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x其它两个文件都在样板工程里面找即可。

\STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Examples\CortexM3\Mode_Privilege

注意:想写什么代码,都可以参考样板工程。样板工程是按功能块分类的。很详细。4.9加载源代码加载源代码加载源代码加载源代码

如下图所示,将对应的源代码加载到指定的文件夹内。

最后右键选择编译

到此,等待编译完成即可。如果代码有问题,根据问题一一解决。

文件版本:V012012-3-2

第10页/共14页

六、MDKKKK4.23的工程建立5.1建立工程建立工程建立工程建立工程

打开软件后,选择建立新的工程

5.2选择芯片选择芯片选择芯片选择芯片

点击OK后,出现下面的对话框,选择否,我们手工加载启动文件

文件版本:V012012-3-2

第1页/共14页

5.3增加文件夹增加文件夹增加文件夹增加文件夹如图所示,选择ManageComponents

弹出如下图所示,我们在中间栏,新增5个文件夹。然后点击OK

文件版本:V012012-3-2

第12页/共14页

5.4添加文件添加文件添加文件添加文件如下图所示,选择添加文件到文件夹。这里加载和IAR工程一样的文件内容到对应的

文件夹里面。具体的文件名,这里不再描述。

下图是一个已经加载后的效果。

5.5配置工程配置工程配置工程配置工程在工程处右击,选择进入工程选项

文件版本:V012012-3-2

第13页/共14页

选择CreateHEXFile,这里选择好才成生成烧录文件。

5.6编译预处理编译预处理编译预处理编译预处理增加编译的宏处理,以STM32F103ZC为例,必须增加以下两项到Define项中,两个

选项之间采用“,”隔开即可。USE_STDPERIPH_DRIVER,STM32F10X_HD选择头文件路径,在includePaths的右边有一个按键,通过按键可以选择对应的头文件

的路径。

文件版本:V012012-3-2

第14页/共14页

5.7配置配置配置配置仿真器仿真器仿真器仿真器如下图所示,首先将仿真器选项由UseSimulator改到右边的选项

在DEBUG栏内选择对应的仿真器即可

点击OK后,就可以编译了

七、MDKKKK4.23的编译问题处理KEIL新版编译器有一些新的要求。

1、所有文件的后面必须空一行出来。否则将提示警告。2、Main函数的前面必须是int而不是我们常用的void.

献花(0)
+1
(本文系无语悲剧首藏)