1、#*熟悉 Keil C 51 的朋友对于 Keil MDK 上手应该比较容易,毕竟界面是很像的。但 ARM 内核毕竟不同于 51 内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的。本文以 MDK V4.03 为例,详细的写一下 MDK 的设置、界面、工具。可能会有些杂乱,但我想所涉及的东西都是最常用的;可能不是那么的严谨清晰,我想谁也没把我期望成专家!哈,有问题欢迎留言。正式开始。首先启动 MDK.当然要先安装好 MDK,如果找不到在哪里下载,可以翻翻我以前的博文。启动后的 MDK 界面如图 1 所示。图 1 MDK 界面第二.新建一个工程。单击 Project -New Visi
2、on Project.菜单项,Vision 4 将打开一个标准对话框,见图 2,输入希望新建工程的名字即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。例如,这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建工程的名字 Project1,Vision 将会创建一个以 Project1.uvproj2 为名字的新工程文件,它包含了一个缺省的目标(target)和文件组名。这些内容在 Project Workspace-Files 中可以看到。#*图 2第三.选择设备在创建一个新的工程时,Vision 要求为这个工程选择一款 CPU。选择设备对话框显示了 Vision
3、 的设备数据库,只需要选择用户所需的微控制器即可。例如,选择 Philips LPC2114 微控制器,这个选择设置了 LPC2114 设备的必要工具选项、简化了工具的配置。#*图 3注意: 当创建一个新的工程时,Vision 会自动为所选择的 CPU 添加合适的启动代码。 对于一些设备而言,Vision 需要用户手动地输入额外的参数。请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的额外配置要求。 无语了,一个钟头写的东西上传之后竟然丢失了一大段。吐血中,继续写。到这里一个工程就新建完成,下面就需要编写代码,然后设置目标配置,编译调试等等。在这之前,我们先来了解一下 MDK 编译器的常
4、用工具按钮,工欲善其事,必先利其器!1.编译快捷按钮:(1)编译当前文件(2)编译已经修改的文件(仅编译已修改的文件,这样可以节省编译时间)(3)编译所有文件(一般使用这个即可,当设置过目标配置选项后,必须使用它来重新编译。)(4)停止编译当前文件#*2.程序下载快捷按钮:具体使用参见我的博文:http:/ (从左向右依次为标签 1、2 、3、4)这个功能还是很实用的,想象一下,当你的一个文件有很多代码的时候,寻找你需要的代码行就变得很不容易,这个时候,设置书签快捷键就派上了用场!(1)设置书签。将鼠标定位到要标记的代码行,单击该图标则在代码行的左侧设下一个书签,再次单击该按钮,取消该代码行的
5、书签。(2)跳到上一书签。(3)跳到下一书签。(4)取消所有书签5.调试快捷按钮:(1)点击此按钮进入调试界面(2)设置断电。单击要设计断电的代码行,再单击此按钮,则为该代码行设置了断点,再次单击,取消所设的断点。通常设置断点是在 debug 窗口的要设断点代码处双击,再次双击取消设置断点。(3)使能/禁止断点。将鼠标定位到一个已经设置了断点的代码行处,单击此按钮,该断点被禁止,再次单击该按钮,断点使能。(4)使能/禁止所有断点。(5)取消所有断点。哎呀,有事要回去了,明天接着写。#*一晚上过去,继续写。6.工程视图和配置快捷按钮:(1)工程视图快捷按钮。这相当于一个下拉菜单,里面有绝大多说的
6、工程窗口。这个按钮用来显示/禁止工程内的窗口。比如常常会有人把工程空间窗口或者编译输出窗口不小心关掉却又不能把它再显示出来,这个时候就可以通过单击这个快捷按钮的相应内容来显示。另外,该按钮实现的功能都可以在菜单 view 中设置。(2)配置快捷按钮。点击一下出现图 4 所示的界面:图 4(1)编辑选项卡。用来设置一些编辑信息,比如缩进的设置,显示行号设置,界面显示效果等等。(2)设置代码、关键的颜色和字体。如果默认的关键字颜色,代码颜色,代码字体、大小不符合你的习惯,可以在这里进行更该,在这里还可以更改用户自定义关键字。(3)设置用户关键字。非常非常好用的一个功能,它可以使你自己定义的关键字像
7、系统关键字一样高亮显示。假如你有想写一个移植性比较高的程序,通常一些和编译器无关的变量类型需要这样定义:typedef unsigned char uint8; /* 无符号 8 位整型变量 */ typedef signed char int8; /* 有符号 8 位整型变量 */ typedef unsigned short uint16; /* 无符号 16 位整型变量 */#*然后在其它模块中都是这样定义一个无符号 8 位整形变量:uint8 test; /定义变量这样有一个什么问题呢?就是 uint8 这个虽然是用户定义的关键字,但是它并不能像系统关键字那样高亮显示。怎么办呢?完全有
8、办法解决,而且就是在这个标签卡中就可完成。方法如下:.打开 User Keywords 标签卡。在左侧窗口选择文件类型,比如 ARM:Editor C File;在右侧窗口点击 按钮,新建一个用户关键字编辑框,输入用户定义的关键字,比如 uint8,这样在程序代码中,所有的 uint8 都会高亮显示。(4)设置快捷键。这个我没有用过,所以不多说明。(5)模板代码。这又是一个比较实用的功能,模板既有软件自带的,也可以自己编辑模板。可以在你书写程序的时候使用这一功能加快代码的输入。使用方法:a.先在该选项卡中编辑自己的代码模板,也可以之用软件自带的模板。b.使用上面 6(1)所说的工程视图快捷按钮
9、,保证该按钮下拉菜单中 Templates 被选中;选中后会在工程工作空间( Project WorkSpace)中出现:标签。c.在编写代码时,应用即可。7.目标工具选项(Target Options ):这个是最常用而且最重要的快捷按钮和设置点。这里以 LPC2114 为例详细做讲述,其它 CPU 与之类似。Vision 可以设置目标硬件的选项。通过上面的工具栏按钮或 Project - Options for Target 菜单项打开 Options for Target 对话框,如图 5 所示。在 Target 页中设置目标硬件及所选 CPU 片上组件的参数。(1)设备选项卡(devi
10、ce )。#*图 5在这里可以在图中 2 区域更改所使用的 CPU,图中 3 区域是该 cpu 的一些描述。(2)硬件目标设置选项卡(Target),见图 6 所示。#*图 61:选择硬件目标设置选项卡2:指定用于的晶振频率3:在应用中可以选择实时操作系统(RTOS)。Keil 提供: RTX Kernel: 它是一个非常有效的 RTOS,支持抢占式的任务调度、 消息和信号传送、信号量等等。 完整的版本带有源代码和包含一个 Flash 文件系统和TCP/IP 协议栈。4:指定选择 ARM 或者 Thumb 模式进行代码生成。5:利用 Cross-Module 优化为全局代码优化创建一个链接反馈
11、文件。6:使用 MicroLib 库。为进一步改进基于 ARM 处理器的应用代码密度,RealView MDK 采用了新型 microlib C 库(用于 C 的 ISO 标准运行时库的一个子集),并将其代码镜像降低最小以满足微控制器应用的需求。Microlib C 库可将运行时库代码大大降低。7:选择大端模式。编译器默认都是小端模式,NXP 的 LPC2114 处理器只支持小端模式,所以该项变成了灰色。三星的 S3C2440 既支持大端也支持小端,这样的处理器该项就可以选择了。8:利用交叉模块优化创建一个链接反馈文件以实现全局代码优化。#*11:片外 ROM 设置,最多支持 3 块 ROM(
12、Flash),在 Start 一栏输入起始地址,在 Size 一栏输入大小。若是有多片片外 ROM,需要在 13 区域设置一个作为启动存储块,程序从该块启动;有几块 ROM 需要选中对应的 9 区域。12:片内 ROM 设置。设置方法同片外 ROM,只是程序的存储区在芯片内集成。17:片外 RAM 设置。基本同片外 ROM,只是若选中 19、20 区域后,对应的 RAM 不会被默认初始化为 0。18:片内 RAM 设置。设置方法与片外 RAM 相同,只是数据的存储区域在芯片内集成。(3)输出选项卡(Output ),见图 7 所示。图 71:选择输出选项卡2:指定输出文件的文件夹,这样做可以减少工程文件夹文件的数目。3.可执行文件的名字。可执行文件指生成的.hex 文件,因此应先使能 4 区域。4:使能后会产生可执行文件。5.创建批文件#*6.生成库文件(4)列表选项卡(Listing),见图 8。图 81:选择列表选项卡2: 指定输出文件的文件夹,这样做可以减少工程文件夹文件的数目。3:设置生成/禁止一些.lst、 .txt 文件。4.设置生成/禁止一些 .map 文件(生成的代码详细信息就在这个文件里)(5)用户程序选项卡(User),见图 9。