搜档网
当前位置:搜档网 › STM32固件V35建立最新版IAR和KEIL都能使用的工程

STM32固件V35建立最新版IAR和KEIL都能使用的工程

使用STM32固件V3.5

建立IAR V6.3工程及配置

和建立MDK4.23工程及配置

目录

一、版本名称和来源 (2)

二、固件的更新说明 (2)

三、STM编译说明 (2)

四、IAR V6.3的升级问题处理 (2)

五、IAR建立工程的方法 (3)

4.1建立工程 (3)

4.2选择芯片 (4)

4.3配置头文件 (5)

4.4芯片类型的预处理 (5)

4.5配置输出文件 (6)

4.6配置仿真器 (7)

4.7加载文件 (7)

4.8头文件的加载 (8)

4.9加载源代码 (9)

六、MDK4.23的工程建立 (10)

5.1建立工程 (10)

5.2选择芯片 (10)

5.3增加文件夹 (11)

5.4添加文件 (12)

5.5配置工程 (12)

5.6编译预处理 (13)

5.7配置仿真器 (14)

七、MDK4.23的编译问题处理 (14)

一、版本名称和来源

IAR V6.3目前是最新版本

名字:CD-EWARM-6301-3142

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

KEIL MDK4.23下载地址:目前是最新版本

https://www.sodocs.net/doc/b72548720.html,/viewthread.php?tid=318399&extra=&page=1

注册机也可以在网上找到。

STM32固件V3.5

名字:stm32f10x_stdperiph_lib

在ST的官网上可以找到。版本信息为V3.5更新日期2011-3-11

二、固件的更新说明

具体说明,在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函数。这样就进入了用户程序。

四、IAR V6.3的升级问题处理

IAR V5.XX升级到V6.XX以后,会出现编译不能通过。将出现

"__interwork__softfp-------信息。

出现该问题的原因是IAR V6升级后,编译器的类型定义发生了变化。原来使用的类型定义不能使用了。网站上有些方法建议我在编译选项中,选择内部的Use CMSIS。如下图

这个方法,不是很好。

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

2、采用该方法后,如果想再建立KEIL的工程,又没有这些文件可以使用。

实际上,IAR V6.XX以后,在安装目录下有对应的CMSIS文件

C:\Program Files\IAR Systems\Embedded Workbench6.0\arm\CMSIS\Include\

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

注意:生成工程时,请取消Use CMSIS选项。否则将报错!

core_cm3.h

core_cmFunc.h

core_cmInstr.h

五、IAR建立工程的方法

4.1建立工程

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

选择OK后,进入创建

选择好路径,并建立对应的文件名称。

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

4.2选择芯片

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

4.3配置头文件

如下图所示,在Preinclude下可以选择对应的文件位置,然后将对应的位置复制到上面的选项框内。

选择完成后,把Preinclude的内容删除

多个INC目录时,可以一项一项的填写进去。

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

4.4芯片类型的预处理

在Defined sysbols下面,把对应芯片的相关选项填写好。以STM32F103ZC为例,由于STM32固件的要求,必须填写两项

USE_STDPERIPH_DRIVER

STM32F10X_HD

4.5配置输出文件

在Output Converter选项中,将产生输出选择上。并选择输出格式。Motoroal是摩托罗拉格式,可以生成.MOT文件,V6.3的产生的是.srec文件。Intel extended是英特尔格式。可以生成HEX文件

Binary是二进制格式。可以生成.bin文件

摩托罗拉格式和英特尔格式是不一样的。这和数据格式有关。

一个是小端格式。一个是大端格式。具体的请查找数据格式的说明。

4.6配置仿真器

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

本例采用J-Link并且采用SWD模式。所以必须选择对应的SWD模式。

该模式下,只需要2根线就可以仿真了。加上电源和地共4根线。电路可以最简单。

4.7加载文件

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

左图是已经建好文件夹,并放入了对应文件的示意图我推荐建立5个文件夹。这样的管理看上去很清析!

DOC放一些说明文档,如版本说明等等。也可省略不用。

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.c system_stm32f10x路径:这个文件在STM32固件目录下

Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\

core_cm3.c路径:这个文件在STM32固件目录下

\Libraries\CMSIS\CM3\CoreSupport

stm32f10x_it.c路径:这个文件在STM32固件的工程目录下

STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Examples\CortexM3\Mode _Privilege

Usesrc放用户的源代码

4.8头文件的加载

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

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

C:\Program Files\IAR Systems\Embedded Workbench6.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加载源代码

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

最后右键选择编译

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

六、MDK4.23的工程建立

5.1建立工程

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

5.2选择芯片

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

5.3增加文件夹

如图所示,选择Manage Components

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

5.4添加文件

如下图所示,选择添加文件到文件夹。这里加载和IAR工程一样的文件内容到对应的文件夹里面。具体的文件名,这里不再描述。

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

5.5配置工程

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

选择Create HEX File,这里选择好才成生成烧录文件。

5.6编译预处理

增加编译的宏处理,以STM32F103ZC为例,必须增加以下两项到Define项中,两个选项之间采用“,”隔开即可。

USE_STDPERIPH_DRIVER,STM32F10X_HD

选择头文件路径,在include Paths的右边有一个按键,通过按键可以选择对应的头文件的路径。

5.7配置

仿真器

配置仿真器

如下图所示,首先将仿真器选项由Use Simulator改到右边的选项在DEBUG栏内选择对应的仿真器即可

点击OK后,就可以编译了

七、MDK4.23的编译问题处理

KEIL新版编译器有一些新的要求。

1、所有文件的后面必须空一行出来。否则将提示警告。

2、Main函数的前面必须是int而不是我们常用的void.

相关主题