STM32 开发环境(工具)介绍
一、Keil 软件介绍
Keil C51 是美国 Keil software 公司出品的 51 系列兼容单片机 C 语言软件开发系统。 KeilC51 软件提供了丰富的库数据和功能强大的集成开发调试工具 μVision2 全是 windows 界面。
只要看一下编译后生成的汇编代码, 就能体会到 keil C51 生成的目标代码的效率之高, 多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 Keil的版本目前是 V7 版本,他是很优秀的 8051C 编译器。
安装 Keil C51 对系统的要求比较低, 一般的 windows 系统就可以了。 安装过程也很方便,依照软件安装过程的提示完成安装即可。
Keil C51 软件的集成编写时在 Vision2 编译环境下进行的。 μVision2 是一个标准的windows 应用程序,它是 C51 的一个集成软件开发平台, 具有源代码编辑、项目管理、 程序生成器等功能,他的人机界面友好,操作方便,是开发者的首选工具软件。
μVision2 提供以下特性帮助用户快嵌入式应用的开发过程。
● 用户可定义密码序列的全功能编辑器;
● 将外部程序加入下拉式菜单的应用管理器;
● 创建和保存项目的项目管理器;
● 汇编编译和连接应用程序的集成程序生成工具;
● 所有环境的对话框和开发工具设置。
(1) C51 编译器和 A51 汇编器
源代码由 μVision2 创建, 并被 C51 编译或被 A51 汇编。 编译器和汇编器从源代码生成
可重定位的目标文件。
KeilC51 编译器完全遵照 ANSIC 语言标准,支持 C 语言的所有标准特性。另外,直接
支持 8051 结构的几个特性被添加到里面。
KeilA51 宏汇编器支持 8051 及其派生系列的全部指令集。
(2) LIB51 库管理器
LIB51 库管理器允许从由编译器或汇编器生成的目标文件创建目标库。 库是一种被特别地组织过并在以后可以被连接重用的对象模块。 当连接器处理一个库时, 仅仅那些被使用的目标模块才被真正使用。
(3) BL51 连接器 /定位器
BL51 连接器 /定位器利用从库中提取的目标模块和由编译器或汇编器生成的目标模块创建一个绝对地址的目标模块。一个绝对地址目标模块或文件包含不可重定位的代码和数据。所有的代码和数据被安置在固定的存储单元器中。此绝对地址目标文件可以用来写入EPROM 或其他存储器件,或由 μVision2 调试器使用来模拟和调试或由仿真器用来测试程
序。
(4) μVision2 调试器
μVision2 调试器源代码级调试器是一个理想的、快速可靠的程序调试器。此调试器包含一个高速模拟器,能够模拟整个 8051 系统,包含片上外围和外部硬件。当从器件库中选择器件时,这个器件的特性将自动配置。
keilC51 的编译过程
μVision2 包含一个项目管理器,它可以使 8051 应用系统设计变得简单。要创建一个应用,
需要按下列步骤进行操作。
(1) 启动 μVision2 ,创建一个项目文件并从器件库中选择一个器件。
(2) 新建一个源文件并把它加入到项目中。
(3) 增加并配置选择的期间的启动代码。
(4) 针对目标硬件设置工具选项。
(5) 编译项目并生成可以编程 PROM 的 HEX 文件。
编译后, C51 编译器产生一个列表文件。 文件中包含源代码、 指示信息、 汇编清单和字符表。
● C51 编译器产生行号,编译时的时间和日期;
● 编译器的运行和产生的目标文件的信息被记录在案;
● 列表文件在每个源代码前没包含行号和 {} 的嵌套层数;
● 如果错误或可能错误的代码存在,一个错误或警告信息将显示出来;
● 选择在 μVision2-options for taget-listing 中的 Assembly code 代码指示选项,将在列
表文件的汇编代码处加入源代码所在的行号;
● 存储器一览表提供了 8051 存储器占用信息;
● 程序中的错误和警告总数包括在文件的结尾处。
二、EWARM开发环境
IAR Embedded Workbench for ARM (下面简称 IAR EWARM )是一个针对ARM 处理器 的集成开发环境,它包含项目管理器、编辑器、C/C++编译器和ARM 汇编器、连接器XLINK和支持RTOS 的调试工具C-SPY。在EWARM 环境下可以使用C/C++和汇编语言方便地开发嵌入式应用程序。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。 目前IAR EWARM支持ARM Cortex-M3 内核的最新版本是 5.4,该版本支持Luminary全系列的MCU。为了方便用户学习评估,IAR 提供一个限制32K 代码的免费试用版本。用户可以到IAR公司的网站www.iar.com下载。 1.2 J-LINK仿真器介绍 全功能版J-LINK配合IAR EWARM、ADS、KEIL、WINARM、Real View等集成开发环境支持所有ARM7/ARM9/Cortex内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。
最显著的特点:速度快,FLASH断点不限制数量,支持IAR、KEIL、RV、ADS等环境。
* USB 2.0接口;
* 支持任何ARM7/ARM9 核Cortex M3 supported, 包括ithumb 模式;
* 下载速度达到600k byte/s;
* DCC速度到达800k byte/s;
* 与IAR Workbench可无缝集成;
* 通过USB供电,无需外接电源;
* JTAG最大时钟达到12M;
* 自动内核识别;
* 自动速度识别;
* 支持自适应时钟;
* 所有JTAG信号能被监控,目标板电压能被侦测;
* 支持JTAG链上多个设备的调试;
* 完全即插即用;
* 20Pin标准JTAG连接器;
* 宽目标板电压范围:1.2V-3.3V (可选适配期支持到5V);
* 多核调试;
* 包括软件:J-Mem,可查询可修改内存;
* 包括J-Link Server (可通过TCP/IP连接到J-Link);
* 可选配J-Flash,支持独立的Flash编程;
* 选配RDI插件使J-Link适合任何RDI兼容的调试器如ADS、Relview和Keil等;
* 选配RDI Flash BP,可以实现在RDI下,在Flash中设置无限断点;
* 选配RDI Flash DLL,可以实现在RDI下的对Flash的独立编程;
* 选配GDB server,可以实现在GDB环境下的调试。
STM32 开发语言介绍
一、C语言介绍
C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。
C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐,成为最近25年使用最为广泛的编程语言[2]。目前,C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。二十世纪八十年代至今的有关程序开发工具,一般都支持匹配ANSI C的语法。
二、汇编语言简介
汇编语言( assembly language )是一种用于 电子计算机 、微处理器 、微控制器 或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用 助记符 (Mnemonics )代替机器指令 的操作码 ,用地址符号( Symbol )或标号( Label )代替指令或 操作数 的地址。在不同的设备中, 汇编语言对应着不同的机器语言 指令集 ,通过汇编过程转换成机器指令。 普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的 ,不同平台之间不可直接移植。
许多汇编程序为程序开发、 汇编 控制、 辅助调试提供了额外的支持机制。 有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。
汇编语言不像其他大多数的 程序设计语言 一样被广泛用于程序设计。 在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。 驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
汇编语言特点:汇编语言是直接面向处理器( Processor )的程序设计语言。处理器是在指令的控制下工作的, 处理器可以识别的每一条指令称为机器指令。 每一种处理器都有自己可以识别的一整套指令, 称为 指令集 。处理器执行指令时, 根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。
汇编语言的另一个特点就是它所操作的对象不是具体的数据 ,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道, 这也是为什么汇编语言的执行速度要比其它语言快, 但同时这也使编程更加复杂, 因为既然数据是存放在寄存器或存储器中, 那么必然就存在着寻址方式, 也就是用什么方法找到所需要的数据。 例如上面的例子, 我们就不能像高级语言一样直接使用数据,而是先要从相应的寄存器 AX 、BX 中把数据取出。这也就增加了编程的复杂性, 因为在高级语言中寻址这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了编程的复杂程度和程序的可读性。再者,汇编语言指令是机器指令的一种符号表示,而不同类型的 CPU 有不同的机器指令系统,也就有不同的汇编语言 ,所以,汇编语言程序与机器有着密切的关系。所以,除了同系列、 不同型号 CPU 之间的汇编语言程序有一定程度的可移植性之外, 其它不同类型(如:小型机和微机等) CPU 之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。
正因为汇编语言有 “与机器相关性 ”的特性, 程序员用汇编语言编写程序时, 可充分对机器内部的各种资源进行合理的安排, 让它们始终处于最佳的使用状态。 这样编写出来的程序执行代码短、执行速度快。汇编语言是各种编程语言中与硬件关系最密切、最直接的一种 ,在时间和空间的效率上也最高的一种,它是高等院校计算机应用技术必修的专业课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术有重要作用。