转自:http://bbs.eeworld.com.cn/thread-236642-1-2.html
KEIL MDK开发工具源自德国 Keil 公司,被全球超过 10 万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。KEIL MDK 集成了业内最领先的技术,包括μVision4集成开发环境与RealView 编译器。支持ARM7、ARM9和最新的Cortex-M3/M1/M0 内核处理器,自动配置启动代码,集成Flash 烧写模块,强大的 Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。KEIL
MDK出众的价格优势和功能优势,已经成为ARM软件开发工具的标准,目前,KEIL MDK在国内ARM开发工具市场已经达到90%的占有率。
KEIL MDK为我们带来了哪些突出特性呢?
1.启动代码生成向导
启动代码和系统硬件结合紧密,必须用汇编语言编写,因而成为许多工程师难以跨越的门槛。KEIL MDK的μVision4工具可以帮您自动生成完善的启动代码,并提供图形化的窗口,随您轻松修改。无论对于初学者还是有经验的开发工程师,都能大大节省时间,提高开发效率。
2.软件模拟器,完全脱离硬件的软件开发过程
KEIL MDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O 仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。而一般的 ARM 开发工具仅提供指令集模拟器,只能支持 ARM 内核模拟调试。
3.性能分析器
KEIL MDK的性能分析器好比哈雷望远镜,让您看得更远和更准,它辅助您查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导您轻松的进行代码优化,成为嵌入式开发高手。通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。
4.Cortex-M3/M1/M0 支持
KEIL MDK支持的Cortex-M3/M1/M0系列内核是ARM公司最新推出的针对微控制器应用的内核,它提供业界领先的高性能和低成本的解决方案,未来几年将成为 MCU 应用的热点和主流。目前国内只有ARM 公司的MDK和RVDS开发工具可以支持Cortex-M3/M1/M0 芯片的应用开发。
5.RealView编译器
KEIL MDK的RealView 编译器与 ADS 1.2 比较:
代码密度:比 ADS 1.2 编译的代码尺寸小 10%。
代码性能:比 ADS 1.2 编译的代码性能高 20%。
6.配备ULINK2/Pro仿真器 + Flash编程模块,轻松实现Flash烧写
KEIL MDK无需寻求第三方编程软硬件支持,通过配套的ULINK2仿真器(或另行选购更高性能之ULINKPro仿真器)与Flash编程工具,轻松实现CPU片内FLASH外扩FLASH烧写,并支持用户自行添加FLASH编程算法;而且能支持FLASH整片删除、扇区删除、编程前自动删除以及编程后自动校验等功能,轻松方便。
7.更贴身的服务——专业的本地化的技术支持和服务
KEIL MDK中国区用户将享受到专业的本地化的技术支持和服务,包括电话、Email、论坛、中文技术文档等,这将为国内工程师们开发出更有竞争力的产品提供更多的助力。
以上第四点提到了 KEIL MDK增加了对Cortex-M3内核的支持,因此我们才能使用它来进行基于 ARM Cortex-M3的STM32微处理器应用程序的开发。现在我们开始尝试建立我们的第一个 STM32工程。
当然要先把KEIL MDK安装好。读者首先要从http://www.embedinfo.com/下载到最新的KEIL MDK,笔者使用的是KEIL MDK V4.13a。下载完毕之后双击开始安装。首先看到欢迎界面:
点击Next,勾选安装协议:
下一步,选择安装路径(笔者因硬盘空间不足安装在E盘,但若读者硬盘资源充裕,则建议安装在C盘,跑起来快些):
下一步,填写用户信息,个人用户随意填入即可:
点击 Next 就进入实质的安装过程啦,Wait for a Whle… …
很快安装完毕,看到 2 个可选项:
1、 保持当前 uVision 的设置。
2、 载入以下选择的工程实例,默认即可。
点击 Next,来到最后一个安装界面:
1、
是否安装ULINK Pro Driver V1.0驱动?
2、
是否显示软件发布说明?
读者可以按照自己的需求勾选。
点击 Finish,KEIL MDK 就完成安装了,可以发现桌面上生成了名为“Keil uVision4”的可执行文件快捷方式。
双击“Keil uVision4”图标打开Keil uVision4开发环境,此时Keil uVision4会自动载入一个工程项目(依安装的倒数第二步勾选而定),我们就此可以简单地看看 KEIL MDK 的用户界面。
如图所示,KEIL MDK的基本用户界面也是很简洁的,也是由一些菜单栏,工具栏,状态栏等区域构成。当然 KEIL MDK 的软件界面远远不止这么简单,读者可以在日后漫长的工程师生涯逐一熟悉。
至此,KEIL MDK的安装工作已经完毕了。接下来我们要开始建立我们的第一个工程。在开始之前,请读者先从网上获取ST公司提供的 STM32 固件库“stm32f10x_fw_archive v2.0 (May 2009)”,然后将其解压。
首先请读者在任意一个地方建立一个空文件夹,并将其命名为“STM32_FW”。然后在STM32_FW 里新建 6 个文件夹,分别命名为“boot”、“library”、“src”、“obj”、“list”、“library”。
如下图所示:
接下来请执行如下操作:
1、在刚才解压“stm32f10x_fw_archive v2.0(May2009)”得到的文件夹里按照路径 \stm32f10x_fw_archive v2.0 (May 2009)\Archive,找到um0427.rar并将其解压。
2、在第1步解压到的um0427文件夹里按路径“\um0427\FWLib\project\RVMDK”找到文件:“cortexm3_macro.s”和“stm32f10x_vector.s”,并将其复制到前面所新建的“STM32_FW\boot”文件夹中。此二者为 STM32 在 MDK 环境下的启动文件,是每一个 STM32 工程所必需的。
3、在“\um0427\FWLib\project”中找到文件:“stm32f10x_it”和“stm32f10x_it”,并将其复制到“STM32_FW\interrupt”中。此二者包含了 STM32 在 MDK 下的中断服务入口函数。
4、将“\um0427\FWLib\library”中的“inc”文件夹和“src”文件夹复制到“STM32_FW\library”中。此二文件夹为 STM32 的固件函数库文件,一般情况下这两个文件夹里的文件都不推荐改动,可以设置只读属性。
5、最后请新建一个名字为“main.c”文件,放入“STM32_FW\src”中。
执行完以上操作后,应该得到如下结构:
STM32_FW\boot:“cortexm3_macro.s”和“stm32f10x_vector.s”文件;
STM32_FW\interrupt:“stm32f10x_it”和“stm32f10x_it”文件;
STM32_FW\src:“main.c”文件;
STM32_FW\library:“inc”文件夹和“src”文件夹;
建立“STM32_FW”文件夹的用意在于,它可以作为我们以后进行 STM32 程序开发时候的一个目录结构。以后我们新建任何一个工程时,只要直接复制这个文件夹里面的四个文件夹就可以完成一个工程最基本的文件结构的建立了。这样可以提高我们的开发效率。
下一步,我们来真正着手建立第一个工程。
首先新建一个文件夹,笔者将其命名为“MyFirstJob”。并将“STM32_FW”中的“boot”、“library”、“src”、“obj”、“list”、“library”文件夹复制到“MyFirstJob”中。如下图所示:
然后执行如下操作:
1、打开 Keil uVision4,依次点击 Project-New uVision Project(如果当前有工程正在打开,请先执行Project-Close Project将其关闭),弹出窗口,填写工程名和保存路径(保存在我们刚才新建的“MyFirstJob”下,命名为 MyFirstJob),然后点击保存。
如下图:
2、接着第 1 步的保存之后,弹出窗口,选择 CPU 类型。此处根据实际情况选取,作者使用的是 STMicroelectronics 的 STM32F103RB 系列。如图所示,我们可以看到右侧显示了该型号 STM32 器件的一些特性,比如 72MHz,128K Flash,20K SRAM……资源都是非常丰富的。 如图所示:
3、选择好 CPU 型号之后点选确定,弹出如下图对话框:
此处是询问需不需要给工程添加 STM32 的启动代码(Startup Code),记得此处点选No。
4、至此 STM32 的工程已经新建完毕,可以看到如下界面:
5、接下来是将一系列必要的工程文件添加到当前工程中,执行如下操作:
(1)将“Target”重命名为“MyFirstJob”,并删除 Source Group1。在“MyFirstJob”上点击右键,在弹出的菜单中选择 Add Group...,依次添加四个 Group,分别命名为“boot”、“library”、“src”、“library”。完成后如下图所示:
(2)在 boot 上点击右键,在弹出的菜单中选择 “Add File to Group ‘boot’... ” ,将“MyFirstJob\boot”文件夹中的“cortexm3_macro.s”和“stm32f10x_vector.s”添加进来;
(3) 依照(2)的方法,给library添加 “MyFirstJob\library\src” 路径下的 “stm32f10x_flash.c”、
“stm32f10x_gpio.c”、“stm32f10x_lib.c”、“stm32f10x_rcc.c”四个文件;
(4)给 src 添加“main.c”;
(5)给 interrupt 添加“stm32f10x_it.c”;
(6)以上操作完毕之后,应该得到如下界面(请在 main.c 文件键入一个空 main 函数,如图所示):
6、右键点击Project 区的“MyFirstJob”,在弹出的菜单中选择“Option for Target ‘MyFirstJob’…”,
弹出选项配置界面,如下所示:
做如下操作:
1)点击Output——Select Folder for Objects...,在弹出的窗口中选择“MyFirstJob\obj”;
2)点Listing——Select Folder for Lisitings...,在弹出的窗口中选择“MyFirstJob\list”;
3)点击OK退出“Option for Target ’MyFirstJob’”界面。
7、按下F7(“Build”的快捷键),进行编译。应该看到如下界面:
最下面的 Build Output 区是编译信息框,可以从中获取编译信息,如代码量,错误和警告信息等,我们可以发现此次编译结果为“0 Error(s),1 Warning(s)”,即“0个错误,1个警告”,而我们可以看到这个警告的解释为:“src\main.c(6): warning: #1-D: last line of file ends without a
newline”,这是gcc编译器一个很常见的警告,意思是当前文件(src\main.c)并不是以一个空行结尾(至于这个空行有什么意义笔者也不清楚),读者只要在“main.c”的最后加上一个空行在编译就可以去掉这个警告了。
8、一个完整的 STM32 工程至此就完成建立了。可以发现“MyFirstJob”文件夹多了几个文件,如下图所示:
可以看到KEIL MDK的工程目录是很简洁的,此处也得益于我们的 obj 文件夹和 list 文件夹存放了编译所生成的大部分文件。但是此工程仍未可以用于进行 STM32 的开发,原因是我们还未对 STM32 的调试开发工具进行设置,在下一节里将会有具体说明。
小结
本节介绍了 KEIL MDK 开发环境的特点以及 STM32 开发环境的建立过程,一切的 STM32开发应用都是从开发环境的搭建开始的。建议读者多多练习,尽快熟悉 STM32 开发环境的建立,为学习下一节的应用程序开发流程做好准备。