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 之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。
正因为汇编语言有 “与机器相关性 ”的特性, 程序员用汇编语言编写程序时, 可充分对机器内部的各种资源进行合理的安排, 让它们始终处于最佳的使用状态。 这样编写出来的程序执行代码短、执行速度快;惚嘤镅允歉髦直喑逃镅灾杏胗布关系最密切、最直接的一种 ,在时间和空间的效率上也最高的一种,它是高等院校计算机应用技术必修的专业课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术有重要作用。
相关推荐
发表于 2021-04-18 13:56
?
21次阅读
发表于 2021-04-18 08:53
?
63次阅读
发表于 2021-04-18 08:53
?
49次阅读
发表于 2021-04-18 08:52
?
71次阅读
发表于 2021-04-18 08:50
?
56次阅读
发表于 2021-04-18 08:49
?
57次阅读
发表于 2021-04-18 08:46
?
51次阅读
发表于 2021-04-18 08:46
?
52次阅读
发表于 2021-04-18 08:46
?
57次阅读
发表于 2021-04-18 08:44
?
60次阅读
STM32外设有哪些?
外设指的是单片机外部的外围功能模块,比如键盘控制芯片,液晶,A/D转换...
发表于 2021-04-18 14:54
?
32次阅读
文档适合STM32F103-EVAL开发板的用户使用,希望通过文档的描述可以使用户更快的进入产品的开...
发表于 2021-04-18 11:23
?
65次阅读
20芯转4芯的线要短,否则高速度会出错。20芯,刚好线中间用地隔开,能高速度。
发表于 2021-04-18 08:58
?
177次阅读
1、彻底学明白BLDC方波控制技术,方波无位置控制技术。
2、原理图设计:手把手教学员从无到有...
发表于 2021-04-18 15:41
?
0次阅读
C语言中的ASSERT(断言)宏是嵌入式软件开发人员可以使用的最好的调试工具之一。
发表于 2021-04-18 11:26
?
215次阅读
在当前,电子信息类专业的大中专学生和想掌握产品硬件设计的工程师一般都会采用STC系列单片机作为入门的...
发表于 2021-04-18 10:50
?
292次阅读
使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQL...
发表于 2021-04-18 09:51
?
212次阅读
在线调试的朋友应该知道,你点一下复位按钮,软件会跳转到下图的位置,其实可以看到复位之后第一个执行的函...
发表于 2021-04-18 16:04
?
88次阅读
c语言中,并没有字符串这个概念:c中叫做字符数组,存储在内存中,是一块连续的空间,不可修改,任何修改...
发表于 2021-04-18 16:39
?
177次阅读
这里跟大家分享一个在使用该图形化配置工具做各外设功能配置时容易忽略的地方。既然说是容易忽略的地方,它...
发表于 2021-04-18 14:26
?
333次阅读
随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随之带来的变化就是程序员需要跟进学习的语...
发表于 2021-04-18 14:15
?
240次阅读
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时...
发表于 2021-04-18 10:39
?
350次阅读
无人机集多种传感器与一身,无人机技术与当前最火的人工智能、物联网技术是相同的,更符合当前技术潮流和趋...
发表于 2021-04-18 11:01
?
6次阅读
直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过...
发表于 2021-04-18 15:49
?
119次阅读
assert_param语句是用于程序开发的时候,调试用的检测语句。默认是不开启的,你可以无视它的存...
发表于 2021-04-18 16:03
?
110次阅读
此器件非常适合于设计相对简单、经济实惠的超低功耗的电池供电类应用,这些应用包括个人医疗设备、工业传感...
发表于 2021-04-18 15:39
?
531次阅读
1.C 语言和汇编语言在单片机编程时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的...
发表于 2021-04-18 16:05
?
160次阅读
类似于C语言中的数组,列表的索引从0开始。索引0对应第一个元素,索引1对应第二元素,依此类推。同时,...
发表于 2021-04-18 10:13
?
251次阅读
在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常...
发表于 2021-04-18 15:04
?
126次阅读
在写裸机软件时,不可避免的在主程序中会有一个超级大的 while(1) 循环,这里面几乎包含整个项目...
发表于 2021-04-18 10:23
?
325次阅读
Linux 是在大约上世纪 90 年代开发出来的,与它一起问世的还有其他一些完成基础功能的开源软件。...
发表于 2021-04-18 10:47
?
2873次阅读
中国,2021年04月18日 - 使用意法半导体最新版的STM32CubeMX配置工具创建STM32...
发表于 2021-04-18 10:35
?
156次阅读
有人使用STM32的定时器事件触发DMA,让其将内存数据传输到通信外设的数据寄存器进行发送,发现DM...
发表于 2021-04-18 09:21
?
593次阅读
修复了 AMD 和 NVIDIA GPU 上的 OpenCL 加速。 现在,可以为模型启用 DNN_...
发表于 2021-04-18 10:46
?
699次阅读
一个C程序可能是由多个分别编译的部分组成,这些不同部分通过一个通常叫做链接器(或连接器,载入器)的程...
发表于 2021-04-18 09:05
?
262次阅读
不要去学STM32。我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对。
发表于 2021-04-18 09:02
?
506次阅读
在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着工程师。为帮助工程师解决...
发表于 2021-04-18 16:21
?
446次阅读
嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,...
发表于 2021-04-18 16:14
?
436次阅读
电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口,我们这里只用到Pl口,...
发表于 2021-04-18 16:01
?
278次阅读
甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。
发表于 2021-04-18 16:33
?
417次阅读
SYSTICK寄存器初始化
void SysTick_Configuration(void)
...
发表于 2021-04-18 15:54
?
104次阅读
STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门...
发表于 2021-04-18 15:40
?
215次阅读
首先总结一下串口232,422,485
串口232:可双向传输,全双工,最大速率20Kbps,...
发表于 2021-04-18 15:42
?
148次阅读
SPI是一种高速的,全双工,同步的通信总线,原理和使用简单,占用引脚资源少,是一种常用的通信方式。
发表于 2021-04-18 15:14
?
184次阅读
我们先不管合不合适,看看为什么会这样。最后发生溢出时计数器的值不等于ARR吗?结合上面图形,不难看出...
发表于 2021-04-18 19:18
?
1233次阅读
//NVIC_CONFIG();
//2.配置EXTIx线的中断优先级
NVIC_Pri...
发表于 2021-04-18 16:02
?
130次阅读
__heap_base
Heap_MemSPACEHeap_Size;//保留Heap_Siz...
发表于 2021-04-18 15:56
?
92次阅读
没有按下的时候,充电时间为T1(default)。按下TPAD,电容变大,所以充电时间为T2。我们可...
发表于 2021-04-18 15:35
?
217次阅读
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。
①、HSI是高速内部...
发表于 2021-04-18 16:50
?
183次阅读
STM32烧录程序目前笔者知道的有三种:JLink ,Ulink和串口烧录,使用工具分别为:JLin...
发表于 2021-04-18 16:09
?
723次阅读
SysTick定时器非常简答,只有四个寄存器。这四个寄存器的含义在《Cortex-M3权威指南》那本...
发表于 2021-04-18 15:59
?
161次阅读
在STM32处理器中有43个可屏蔽中断通道(不包含 16个 Cortex?-M3的中断线)。共设置了...
发表于 2021-04-18 15:35
?
99次阅读
显然,很容易想到——利用DMA。所以,笔者使用输入捕获事件触发DMA来搬运寄存器而非触发中断即可,然...
发表于 2021-04-18 15:07
?
598次阅读
////DS1302引脚定义,可根据实际情况自行修改端口定义
#define RST PAou...
发表于 2021-04-18 16:30
?
203次阅读
这就是究极形态了,我们添加了第四行的代码,来看&_min1,它的意思是取_min1的地址,而&_mi...
发表于 2021-04-18 16:29
?
382次阅读
1. 在汇编中保存现场,然后调用C语言编写的中断处理程序,任务处理完成之后,再返回到汇编中恢复现场,...
发表于 2021-04-18 16:17
?
105次阅读
般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。
发表于 2021-04-18 15:20
?
397次阅读
C++是由C语言发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字...
发表于 2021-04-18 12:58
?
438次阅读
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用...
发表于 2021-04-18 15:53
?
446次阅读
Serial bootloader是一种非常方便使用并且低成本的程序烧写的方法。一般情况,每次烧写M...
发表于 2021-04-18 16:03
?
149次阅读
C语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,...
发表于 2021-04-18 15:06
?
356次阅读
类型转换可以是隐式的,由编译器自动执行,也可以是显式的,通过使用强制类型转换运算符来指定。在编程时...
发表于 2021-04-18 14:59
?
396次阅读
#include 指令会指示 C 预处理器浏览指定的文件作为输入。预处理器的输出包含了已经生成...
发表于 2021-04-18 14:55
?
446次阅读
多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 ""...
发表于 2021-04-18 14:49
?
277次阅读
但是,如果您预先不知道需要存储的文本长度,例如您向存储有关一个主题的详细描述。在这里,我们需要定义一...
发表于 2021-04-18 14:46
?
298次阅读
当然阶段四纯属个人的对未来的推测,但是,近年来,FPGA也高速发展,明显有当年汇编语言开发到C高...
发表于 2021-04-18 14:23
?
619次阅读
学习STM32开发,肯定少不了DEBUG调试这一步骤。那么,本文带你了解一下这个调试相关的知识。本文...
发表于 2021-04-18 11:39
?
560次阅读
通常情况下,使用最多的方法的就是使用rand函数随机生成伪随机数来完成随机数的生成工作。注意这里的伪...
发表于 2021-04-18 16:46
?
357次阅读
stdio.h 是一个头文件 (标准输入输出头文件) and #include 是一个预处理命令,用...
发表于 2021-04-18 14:44
?
314次阅读
如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到...
发表于 2021-04-18 14:38
?
346次阅读
评论