Keil MDK的安装与工程建立
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%的占有率。
使用MDK前当然要先把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 的调试开发工具进行设置,在下一节里将会有具体说明。
用户1720092 2013-12-26 20:23
用户1720092 2013-12-26 20:20