原创 告别IAR,拥抱RVMDK

2008-6-29 17:08 3498 6 13 分类: MCU/ 嵌入式

        自从接触STM32以来,一直都是在IAR For ARM 4.22A环境下进行开发。因为以前用过IAR For MSP430,对IAR的开发环境比较熟悉,再加上万利板子提供的例程都是IAR的,用起来也还顺手。


        直到前一阵参加了一个ARM的研讨会,会上英蓓特极力推荐RealView MDK中国版,好奇之下就Download了一个试用版,但一直没仔细研究。后来网上又出现了ST Link-II在RealView MDK下的驱动,下来试了试,能用!这下可不能浪费了咱手上的开发板,于是就在RVMDK下玩了不少程序,发现RVMDK的确在很多地方都比IAR用起来更顺手,特别是软件仿真功能,用起来真爽!于是本人决定弃暗投明,转入RealView MDK开发环境了。


        为了让像我一样的STM32新手尽快入门,我把自己对这两个开发环境的体会总结如下:


一、在IAR EWARM中建立工程的步骤:


1. 建立工程项目文件
    新建一个文件夹来存放整个工程项目,在该项目文件夹下建立几个子文件夹存放不同类别的文件:
i. 将官方模板中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和空白main.c文件复制到该项目文件夹下;


ii. Obj-存放工程文件,将官方模板中的cortexm3_macro.s、lnkarm_flash.xcl、lnkarm_ram.xcl和stm32f10x_vector.c文件复制到该文件夹下。


iii. library-存放STM32 FWLib文件,将官方提供的固件库library复制到该文件夹下。


2. 在IAR中建立工程
    打开IAR,在Project菜单下新建工程,把该工程存放在刚刚建立的Obj子文件夹下;
 
3. 工程管理


i. 为了方便项目的管理,在刚建立的项目中添加几个Group用来放置不同类型的文件:
1).FWLib-用来存放所需固件库的头文件;
2).StartUp-用来存放STM32的启动代码,添加cortexm3_macro.s和stm32f10x_vector.c(中断向量表);
3).User-用来存放用户文件,添加main.c和stm32f10x_it.c(中断空函数)


ii. 进行项目设置:
   在工程上单击右键,选择Option,打开工程设置窗口:
1).在General Options->Target->Device中选择ARM器件型号“ST STM32F10x”;
2).在C/C++ Compiler->Preprocessor->Additional include directories中填入
$PROJ_DIR$\..\
$PROJ_DIR$\..\library\inc
注:$PROJ_DIR$表示工程所在路径,\..\表示返回上一级目录。


3).在linker->config->Linker command file里选中Override default,然后根据实际情况填入$PROJ_DIR$\lnkarm_ram.xcl,并同时在C/C++ Compiler->Preprocessor->Defined Symbols里填入“VECT_TAB_RAM”(在RAM中调试);
或者
$PROJ_DIR$\lnkarm_flash.xcl,并同时在C/C++ Compiler->Preprocessor->Defined Symbols里填入“VECT_TAB_FLASH”(在FLash中调试);


4).在Debugger->Driver中选择“Third-Party Driver”,在Third-Party Driver->IAR debugger Driver中填入ST LINKII的驱动C:\Manley\drivers\STLink\STM32Driver.dll”;


4. 编译调试
    在stm32f10x_conf.h中将没有用到的外设注销,将所需外设固件库的头文件添加到工程中;


 


二、在Keil Realiew MDK中建立工程的步骤


1. 建立工程项目文件
    新建一个文件夹来存放整个工程项目,在该项目文件夹下建立子文件夹存放不同类别的文件:
Obj:存放工程文件
Out:存放编译输出文件
User:存放用户源代码文件
library:STM32 FWLib文件


2. 在KEIL中建立工程
    打开KEIL3,在Project菜单下新建工程,把该工程存放在刚刚建立的Obj子文件夹下;点击保存后弹出选择器件窗口,选择使用的ARM器件型号;点击确定后弹出是否添加启动代码的对话框,这个时候选择“是”,工程建立成功。


3. 工程管理
    为了方便项目的管理,在刚建立的项目中添加几个文件夹用来放置不同类型的文件:
 
i. 在工程上单击右键,选择Manage Components,弹出工程文件管理窗口,建立几个文件夹备用,这可以根据个人编程习惯处理;
1).StartUp-用来存放STM32的启动文件;


2).在Project菜单下新建源文件main.c,保存在User子文件夹下,注意文件名一定要有.c后缀,把该文件添加到工程中(Add File to Group "User")并编写程序代码;


3).将所使用到的库函数加入工程(Add File to Group "Lib"),其中stm32f10x_lib.c文件是整个库的一些定义,是必须要的;在这里,如果不知道使用了哪些库函数,不知道应该添加哪些库文件进入工程,有个最简单的办法就是添加所有的固件库函数到工程,为了方便可以直接添加:C:\Keil\ARM\RV31\LIB\ST路径下的STM32F10xR.LIB文件进入工程;


ii. 在编译之前还应该对工程选项做些设置,当然,这些设置也可以在建立工程后马上进行;在工程上单击右键,选择“Options for Target”,打开选项窗口:
Device标签为器件选择;
Target标签为目标设置;
Output标签为输出设置,点击“Select Folder for Objects”,选择输出文件存放路径为Out子文件夹;


Debug标签为DEBUG调试设置,默认状态为软件调试,这里选择用ST LINK-II Debugger进行硬件调试,选择Run to main是为了进入调试状态后直接进入主函数;
Utilities标签是程序下载设置,这里同样选择ST LINK-II Debugger;


4. 编译调试
    目前ST LINK-II不支持Flash菜单中的Download和Erase命令,程序通过点击“Start/Stop Debug Session”菜单自动载入flash中供调试。


 


        好了,最后再分别送上IAR和RVMDK的工程模板,工程模板的使用方法可以参考我的上一篇文章。


IAR工程模板点击下载   


RVMDK工程模板点击下载    

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户1848522 2015-10-26 08:58

5美元?确定不是50?

用户593939 2015-10-25 22:45

技术的了不起,很了不起

用户538965 2009-12-2 14:31

谢谢分享 :)

用户158184 2008-7-27 15:44

我也在用RVMDK!

用户1113894 2008-7-21 16:45

多谢!刚看到这个" 目前ST LINK-II不支持Flash菜单中的Download和Erase命令,程序通过点击“Start/Stop Debug Session”菜单自动载入flash中供调试。" 解决了无法下载问题!

用户1560991 2008-7-19 14:30

建议你用RealView MDK,毕竟它是ARM的嫡系!MSP430是16位的,STM32是32位的速度和功能都比430强很多!

用户1113894 2008-7-18 12:56

正要学习STM32,不知道学IAR好,还是RealView好那,看了你的文章,很有启发! 另外不知,你对msp430 和 STM32有没有个对比评价那?

用户1328754 2008-7-9 20:08

xiexie ~~~

用户1560991 2008-6-29 17:27

排版有点乱,大家凑或看吧!
相关推荐阅读
用户1560991 2008-12-10 19:55
最简单的C#入门教程
从网上找到的C#学习的好资料! 关于作者:Aisha Ikram        我现在在英国一家软件公司任技术带头人。我是计算机科学的硕士。我主要使用 .NET 1.1/2.0, C#, VB.NET...
用户1560991 2008-12-08 22:40
在C#中加载自己编写的动态链接库(转贴)
        本文主要讲述如何在C#中逐步实现加载自己用C++语言编写的动态链接库,以及在导入时如何进行C#和C++语言的数据类型匹配。 一、发生的背景         在开发新项目中使用了新的语言...
用户1560991 2008-12-08 10:25
新的学习方向
        最近的生活总算恢复正常了,可以静下心来学点东西了!新的学习方向是VC#,以前俺用的是VC++ 6.0,最近看到同学在用VC# 2005,很好很强大,支持快速开发。于是俺就想学学,以后用...
用户1560991 2008-08-08 11:04
基于STM32和nRF905的无线数传系统_软件篇
              STM32与nRF905模块间的电路连好后,剩下的工作就是编写程序了。都说STM32的固件库难用,但俺觉得从中可以学到不少东西,尤其是模块化编程的思想。STM32的固件库将...
用户1560991 2008-08-05 12:58
基于STM32和nRF905的无线数传系统_硬件篇
最近搞到一对nRF905无线模块,迫不及待的拿出来给大伙瞧瞧。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:...
用户1560991 2008-08-03 20:31
STM32精确延时的实现方法
前面用STM32的GPIO模拟液晶驱动时序时遇到一个问题,就是怎样产生一段较为精确的延时。通常产生一小段延时的方法就是利用一个递增或者递减循环进行软件延时。<?xml:namespace pre...
EE直播间
更多
我要评论
7
6
关闭 站长推荐上一条 /3 下一条