双击Keil u Vision3的图标,启动Keil uVision3程序,你会得到图1.10所示的Keil u Vision3的IDE主界面。IDE表示Integrated Development Environment,即集成开发环境。Keil提供了包括C编译器、宏汇编、连接器、库管理及一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(u Visoin)将这些部分组合在一起,其软件开发逻辑结构如图1.11所示。掌握这一软件的使用,对于进行单片机或ARM系统开发者来说是十分必要的,如果你使用C语言编程,那么Keil是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
集成开发环境
早期的程序设计各个阶段都要用不同的软件来进行处理,如先用字处理软件编辑源程序,然后用链接程序进行函数、模块连接,再用编译程序进行编译,开发者必须在几种软件间来回切换操作。现在的编程开发软件将编辑、编译、调试等功能集成在一个桌面环境中,这样就大大方便了用户。这就是集成开发环境(简称IDE)。IDE是一个用于程序开发的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具等一体化的开发软件服务套件。所有具备这一特性的软件或者软件套件(组)都可以叫做集成开发环境。比如,微软的Visual Studio.Net系列,可以称为C++、VB、C#等语言的集成开发环境。
图1.10 Keil uVision3的IDE主界面
通过用Project菜单中的New Project命令建立项目文件(工程文件),过程如下:
(1)创建HelloRobot文件夹,将提供的library文件夹,stm32f10x_heads.h文件和HelloRobot.h文件复制到此目录下。library文件夹里面的文件是STM32库文件。
(2)单击Project,会出现图1.12所示的画面,然后选择New u Vision Project,弹出Create New Project对话框,找到刚才建立好的HelloRobot目录,如图1.13所示。
图1.11 Keil软件开发逻辑结构图
图1.12 Keil uVision3工程菜单画面
图1.13 Create New Project对话框
(3)双击HelloRobot文件夹,在文件名中输入工程文件名:HelloRobot(可不用加后缀名),保存在此目录下,如图1.14所示。之后单击“保存”出现图1.15所示的窗口。
图1.14 创建HelloRobot工程
(4)这里要求选择芯片的类型,双击STMicroelectronics,在弹出的下拉菜单中选择STM32F103xx(与教学开发板一致),就会出现相关介绍信息。例如选择STM32F103VB,如图1.16所示。看看选择不同的STM32F103xx单片机,所显示的资源有哪些不同。
(5)按OK确定,出现图1.17所示窗口。询问是否加载启动代码,在这里选择“否”,不加载(后面将会手工装载启动代码:cortexm3_macro.s,stm32f10x_vector.s,而不用系统提供的默认启动代码)。选择“否”后将出现图1.18所示窗口,此时项目文件,即工程文件就创建好了。
图1.15 Select Device for Target‘Target 1’对话框
图1.16 CPU型号选择窗口
图1.17 是否加载启动代码提示窗口
图1.18 目标工程窗口
启动代码
启动代码(Bootloader)是嵌入式系统启动时常见的一小段代码,类似于启动计算机时的BIOS,一般用于完成CPU的初始化工作和自检。其他常见的启动代码比如ARM9嵌入式系统中的UBoot或Vivi等。同一型号的CPU启动代码会随着开发板的设计不同而略有不同。
STM32这两个启动代码主要完成处理器的初始化工作。其中,启动文件cortexm3_macro.s的作用:定义Cortex-M3宏指令操作,这些宏指令操作可供用户在C中调用。如在C文件中有必要使用汇编指令和这些宏指令做预处理时,只要直接在C代码中使用EXPORT后面的宏指令操作就可以了(类似于在C中嵌入汇编的操作);启动文件stm32f10x_vector.s的作用:初始化堆栈,定义程序启动地址、中断向量表和中断服务程序入口地址,以及系统复位启动时,从启动代码跳转到用户main函数入口地址。
查看HelloRobot目录,你会发现HelloRobot.uv2工程文件。另外,opt文件是关于工程开发环境的参数配置和选项设置文件(Option File)。plg文件是编译日志文件(Compile Log File),存放编译器的编译结果,编译时采用的命令参数,已经编译后得到的错误和警告信息。
项目文件(工程文件)
在当今的应用软件开发中,一个软件系统是由工程文件组成,工程文件包含若干个程序文件、头文件、甚至库文件。类似一本书,有目录和各个章节;或者像一个公司,有好多部门。uv2 文件是51、STM32等单片机或者ARM的Keil项目文件(工程文件),打开它就打开了这个工程,即与应用程序相关的全部文件和相应的设置。它包括的文件有头文件、源文件、汇编文件、库文件、配置文件等。这些文件的有关信息就保存在称为“工程”的文件中,每次保存工程时,这些信息都会被更新。在Keil中使用工程文件来管理构成应用程序的所有文件,而且编译生成的可执行文件是与项目文件(工程文件)同名。