2024年4月7日发(作者:)

第4章 keil uvision4教程

本章主要内容:

 Keil C51的简介

 Keil uvision4的安装

 Keil uvision4的创建应用程序

本章主要从简单介绍了

Keil C51

,以及Keil uvision4的安装和如何在Keil中创建应用

程序。

4.1 Keil C51的简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与

汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的

完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件

需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几

乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强

大的软件仿真调试工具也会令你事半功倍。

使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX

可执行文件写入单片机内。KEIL uVISION是众多单片机应用开发软件中最优秀的软件之一,

它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,

它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方

面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分

喜欢。

2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发

人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。

新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效

的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。

2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了

最新版本的Keil μVision4,其编译器、调试工具实现与ARM器件的最完美匹配。

µVision4在µVision3的成功经验的基础上增加了:

 System Viewer (系统查看程序)窗口,提供了设备外围寄存器信息,这些信

息可以在System Viewer窗口内部直接更改。

 Debug Restore Views (调试恢复视图)允许保存多个窗口布局,为程序分析

迅速选择最适合的调试视图。

 Multi-Project Workspace(多项目工作空间)为处理多个并存的项目提供了

简化的方法,如引导加载程序和应用程序。

 扩展了Device Simulation(设备仿真)功能以支持许多新设备,如Luminary、

NXP和东芝生产的基于ARM Cortex-M3处理器的MCU;Atmel SAM7/9;及新的

8051衍生品,如Infineon XC88x和SiLABS 8051Fxx。

 支持许多debug adapter interfaces(调试适配器接口),包括ADI miDAS Link、

Atmel SAM-ICE、Infineon DAS和ST-Link。

3.2 Keil uvision4的安装

第1步:运行安装程序

第2步:完成安装过程

第3步:双击运行刚安装完毕的Keil uVision4,进入Keil uVision4的集成编

辑环境

第4步:单击选择菜单“Debug”-->"Start/Stop Debug Session" (如果跳出

下图提示框:****Limit : 32K,则说明此软件没有获得序列化,只能编译code

32K一下的程序,如果没有弹出,说明以下步骤可省略)

第5步:(破解开始)单击选择菜单“File”-->"License Management" 将弹出

下面一张图的界面:复制其中CID号,以便在黏贴到第6步中的破解软件中

第6步:运行破解软件,将出现下面一张图的界面,把上步复制的CID号黏贴到

相应位置,其他选项如图,然后点击“Generate”按钮,然后复制产生的序列号,

黏贴到第5步的下面一张图的LIC输入框中,然后点击右侧的Add LIC,即可完

成破解

3.1.1 创建应用程序

µVision包含一个工程管理器,它使得设计ARM微控制器的嵌入式应用程序更加方便。

创建应用程序,必须先创建对应的工程。为了创建一个新的工程,必须按如下步骤实现:

1.

2.

双击图标,运行µVision。

创建一个工程文件,从设备数据库中选择一个CPU芯片。下面以名为test的工程

为例创建工程文件。

单击Project ->->µVision Project菜单项,µVision 4将打开一个标准对话框,输入希望

新建工程的名字即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。例如,这

里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建工程的名字

test,µVision将会创建一个以为名字的新工程文件。

创建完了工程文件之后,从设备数据库中选择一个CPU芯片。例如,选择AT89C52微

控制器,如图所示:

图4-1 选择CPU芯片

当创建一个新的工程时,µVision会自动为所选择的CPU添加合适的启动代码,如图9-

3。

图4-2 添加启动代码

对于一些设备而言,µVision需要用户手动地输入额外的参数。请仔细阅读这个对话框

右边的信息,因为它可能包含所选设备的额外配置要求。

3. 创建一个新的源文件,将这个源文件加载到工程中。

通过File ->New菜单项可创建一个新的源文件。这时将打开一个空文件编辑窗口,在这

里可以输入源文件代码。当通过File->Save As 对话框以扩展名.C的形式保存了这个源文件

以后,µVision可以用彩色高亮度显示C 语言的语法。例如,保存下面的代码到MAIN.C文

件中。

#include

#include

void main(void)

{

SCON=0x50;//串口方式1,允许接收

TMOD=0x20;//定时器1 定时方式2

TCON=0x40;//设定时器1 开始计数

TH1=0xE8;//11.0592MHz 1200波特率

TL1=0xE8;//

TI=1;

TR1=1;//启动定时器

while(1)

{

printf("hello world!n");//显示hello world

}

}创建源文件以后,就可以将这个文件添加到工程中。µVision提供了几种方法将源文件

添加到工程中。例如, 在Project Workspace ->Files页的文件组上点击鼠标右键,然后在弹

出的菜单中选择Add Files菜单项,这时将打开标准的文件对话框,选择刚才创建的MAIN.C

文件即完成源文件的添加。

图3-3 添加文件

4. 增加和配置ARM设备的启动代码。

一般来说,ARM程序需要与目标硬件的设计配置相匹配的CPU初始化代码。当创建工

程的时候,µVision要求添加与选定的CPU相匹配的启动代码。根据所使用的工具链的不

同,启动代码文件所在的文件夹分别为 ..ARMStartup (针对Keil开发工具

链),..ARMGNUStartup(针对GNU开发工具链) 和 ..ARMADSStartup(针对ADS开发工

具链)。对于不同的微控制器来说,这些文件夹包含不同的 启动代码 。Philips LPC2106的

启动代码文件为...StartupPhilipsStartup.s 。为了和目标硬件相匹配,用户可能会修改这个

启动代码文件,所以工程中的启动代码文件是Startup.s的一个副本。

文件组(file group)可以组织更大的工程。对于CPU的启动代码和其他的系统配置文件,

可以通过Project->Manage ->Components,Environment, Books对话框创建一个单独的文件组。

使用New (Insert)按钮创建名为System Files的文件组。在工程窗口中,可以将Starup.s文件

拖放到这个新建的文件组中。

图4-5 Components, Environment, Books

如图4-5,在工程中添加文件后,µVision的工程空间窗口中将会出现所有的文件。这个

窗口中的文件以在窗口中的排列顺序进行编译和链接。可以通过拖放的方式移动文件的位

置,同时也可以单击目标和组改变它们的名字。在本窗口内单击鼠标 右键,在弹出的菜单

中可以进行如下的操作:

 设置工具选项

 删除文件或组

 将文件添加到组中

 打开文件

图4-5 工程空间中的文件

在工程空间中,不同的图标显示了文件和文件夹(文件组)的不同属性。如:

带箭头的文件图标表示编译和链接工程文件。

链接运行时不包含的文件不带箭头。对于一般的文档文件这是很常见的。然而,

在属性对话框中取消Include in Target Build的选择,同样也可以不包含源文件。

只读文件被标志为一个钥匙。在软件版本控制系统中这样的文件是很常见的,

因为SVCS使这样文件的拷贝只读。

,带有特殊选项的文件和文件夹被圆点标记。

5. 设置目标硬件的工具选项。

µVision可以设置目标硬件的选项。通过工具栏按钮或Project - Options for Target菜单项

打开Options for Target对话框,在Target页中设置目标硬件及所选CPU片上组件的参数。

下图是LPC2106的一些参数设置。

图4-6 Target对话框

 Xtal,设备的晶振(XTAL)频率。大多数基于ARM的微控制器都使用片上

PLL产生CPU时钟。所以,一般情况下CPU的时钟与XTAL的频率是不同的。仔

细查阅硬件手册以确定合适的XTAL的值。

 Use On-Chip ROM/RAM,仅针对Keil ARM工具。选择这两个多选框以

后,将设置Keil LA链接器/装载器。对于GNU和ADS,是通过链接器控制文件实

现的。

 External Memory 仅针对Keil ARM工具。指定目标硬件的外部存储区域。

RAM用于存取变量,而ROM用于存储常量和程序代码(一般为EPROM或Flash

存储器)。这些信息用于配置Keil LA链接器/装载器。对于GNU和ADS,是通过

链接器控制文件实现的。

对于GNU和ARM ADS/RealView工具链来说,链接器的配置是通过链接器控制文件实

现的。这个文件指定了ARM目标硬件的存储配置。预配置的链接器控制文件 在文件

夹..ARMGNU或..ARMADS中。 为了与目标硬件相匹配,用户可能会修改链接器控制文

件,所以工程中的那个文件是预配置的连接控制文件的一个副本。这个文件可以通过Project

- Options for Target对话框的Linker页添加到工程中。

图4-7Linker对话框

 Enable Garbage Collection,允许未使用输入段的垃圾回收。在不支持这个选项的目

标中,它会被忽略。这个选项和'-r'不一样,也不能在动态链接时使用。

 Do not use Standard System Startup Files,链接时不使用标准的系统启动文件。如果

不选 中这个选项时标准的系统库会被正常使用。

 Do not use Standard System Libraries,链接时不使用标准的系统库文件。仅使用C

和GCC库。

 Text Start,指定输出文件代码段的起始地址。必须是一个单精度的十六进制整数。

为了保持和其他链接器的兼容性,必须忽略这个十六进制值前面的0X。

 Data Start,指定输出文件数据段的起始地址。必须是一个单精度的十六进制整数。

为了保持和其他链接器的兼容性,必须忽略这个十六进制值前面的0X。

 BSS Start,指定输出文件BSS段的起始地址。必须是一个单精度的十六进制整数。

为了保持和其他链接器的兼容性,必须忽略这个十六进制值前面的0X。

 Linker Script File Include Libraries,指定在编译时导入的库。

 Include Paths,向路径列表中添加路径,在这些路径中LD将搜索库文件和ld控制

脚本。在任何时候都可以使用这个选项。这些文件夹是按照它们在列表中的顺序搜

索,且是在默认文件之前搜索的。

 Misc controls,使用Misc 控制框指定链接器需要的命令,这些命令没有单独的对

话框控制。

 Linker control string,这个文本框显示了当前链接器的命令行。

6. 编译工程,创建能烧写到PROM中的十六进制文件。

一般来说,在新建一个应用程序的时候Options ->Target页中的所有的工具和属性都要

配置。单击Build Target工具栏按钮将编译所有的源文件,链接应用程序。当编译有语

法错误的应用程序时,µVision将在Output Window ->Build窗口中显示错误和警告信息。单

击这些信息行,µVision将会定位到相应的源代码处。

图4-8 编译错误提示

如果编译成功的话,源文件编译成功产生应用程序以后就可开始调试了,然后创建可下

载到EPROM或软件仿真器中运行的Intel十六进制文件。当Options for Target ->Output页

中的Create HEX file多选框被选中后,µVision每次编译后都会生成十六进制文件。FLASH

Fill Byte、Start和End文本框中的值被OH166使用工具用来产生十六进制文件。在Run User

Program #1文本框中指定程序时,当编译过程完成后就可以启动PROM编程器了。

图4-9 编译生成十六进制文件选项

现在,可以修改工程中已存在的代码或向工程中添加代码了。Build Target工具按钮仅

编译已修改过或新建的源文件,产生可执行的文件。µVision有一个文件的依赖列表,它记

录了每一个源文件所包含的头文件。甚至工具选项都保存在文件依赖列表中,所以只有在需

要的时候µVision才会重新编译这些源文件。

通过使用不同的工程目标(project target),µVision 可以使单个工程生成几个不同的程序。

开发者可能需要一个目标(target)作为测试,另一个目标作为应用程序的发布版。在同一个工

程文件中,每一个目标都具有各自的工具设置,通过快捷键Alt+F7,即可调出图9-7进行多

目标工具设置。

文件组(file group)可以将工程中相关的的文件组织在一起。这样有利于将一组文件组织

到一个功能块中或区分一个开发团队中的工程师。在以前的一些例程中,已经以文件组的形

式将CPU相关文件同其他源文件隔离开。在µVision中,使用这种技术很容易管理具有几

百个文件的工程。

在Project ->Manage->Components, Enviroment and books->Project Components 对话框中

可以创建工程目标和文件组。在以前的一些例程中,已经使用了这个对话框添加系统配置文

件。下图显示了一个例程的工程结构。

图4-10 设定多个工程目标

在编译工具栏可以快速的改变当前编译的工程目标。

图4-11 快速改变编译目标

在编译工具栏中,按钮可以弹出工程选项,其中包含多个标签页,如图9-10。

各个标签页简要介绍如下:

表一:

Device

Target

Output

Listing

从µVision的设备数据库中选择选择设备。

为应用程序指定硬件环境。

定义工具链的输出文件,在编译完成后运行用户程序。

指定工具链产生的所有列表文件。

C

Asm

Linker

Debug

Utilities

设置C编译器的工具选项,例如代码优化和变量分配。

设置汇编器的工具选项,如宏处理。

设置链接器的相关选项。一般来说,链接器的设置需要配置目标系统的

存储分配。设置链接器定义存储器类型和段的位置。

µVision调试器的设置。

配置Flash编程实用工具。

9.3.2 测试应用程序

µVision调试器可以测试用GNU或ARM ADS/RealView工具链开发的应用程序。µVision

调试器提供了两种操作模式,这两种模式可以在Options for Target ->Debug 对话框中选择。

图4-12 Debug设定

 单选框Use Simulator用于选择µVision的软件仿真器作为调试器,它可以

在没有目标硬件的情况下仿真ARM7微控制器的大部分功能。在目标硬件设计好

之前,可以用这个软件仿真器调试嵌入式应用程序。µVision可以仿真许多片上外

设,例如串口,外部I/O和定时器。当为目标(target)从设备数据库中选择一个CPU

时,可仿真的片上外围就已经确定了。