第四章MDK-ARM软件入门
实验一MDK-ARM软件与ARM处理器基本编程

实验一 MDK-ARM软件与ARM处理器基本编程 1.MDK-ARM开发工具包简介MDK-ARM(ARM微控制器开发工具包)是ARM公司推荐的用于基于ARM处理器的微控制器的完整软件开发环境。
MDK-ARM由Keil公司(已被ARM公司收购)提供,利用了该公司先进的µVision 集成开发环境,适用于基于 Cortex™-M、Cortex-R4、ARM7™ 和ARM9™ 处理器的微控制器芯片开发。
MDK-ARM 专为微控制器应用程序而设计,易于学习和使用,同时具有强大的功能,能满足大多数要求苛刻的嵌入式应用程序的需求。
图1 MDK-ARM模块示意图MDK-ARM微控制器开发工具包的主要性能和特征包括:∙完全支持 Cortex-M、Cortex-R4、ARM7 和 ARM9 微控制器芯片∙集成行业领先的 ARM C/C++ 编译工具链∙集成µVision集成开发环境,包括项目管理器、编辑器和调试器∙集成Keil RTX 确定性、空间占用小的实时操作系统(开源代码)∙集成TCP/IP 网络套件,提供多种协议和各种应用程序∙为USB 设备和 USB 主机堆栈配备标准驱动程序类∙ULINKpro 支持对正在运行的应用程序进行即时分析并记录执行的每条 Cortex-M 指令∙可提供执行程序的完整的代码覆盖率信息∙集成执行性能分析器和性能分析器支持程序优化∙提供大量示例项目可帮助快速熟悉 MDK-ARM 强大的内置功能∙符合 CMSIS Cortex 微控制器软件接口标准MDK-ARM 具有四种版本:MDK-Lite、MDK 基础版、MDK 标准版和 MDK 专业版。
所有版本都提供完整的 C/C++ 开发环境和调试支持,MDK 专业版主要包括了丰富的中间件库。
其中,MDK-Lite版提供免费下载,不需要序列号或许可证密钥,但是其所能开发的程序大小限制在32KB以内。
下载网址在/arm/mdk.asp。
keil4建立ARM(STM32)工程和设置

此篇根据个人的mdk4.5+JlinkV8使用状况,来写的日记,我只捡一些个人碰到的一些大众化的问题来说,其他的我就贴图了(也会简单说一下),高手可以掠过。
呵呵1新建工程,和增加源代码a.创建工程:点上述的按钮后,自己输入自己的工程名称,选择路径,然后保存.b.增加一个Groupc.增加源文件:1.自己编写的源文件:File New ,Ctrl+s ,输入源文件名, 选择路径,然后保存2.复制已有的源文件到一个文件夹下,然后如下图所示, 把所有源文件增加进来.(个人比较懒,实验工程,所以就一个group把所有的源码全加进来了。
)增加所有源文件后的界面2 keil4设置,我把我的设置全部贴图,我自己碰到的问题,会提出来说下。
a.点击target option按钮,进入设置界面图1. device(我的是STM32F103ZET6芯片)图2 Target上述的注意的几个地方:Xtal :( 我用的是8M晶振)System_V iew File:根据我之前的情况来看,只要其他的选好了,keil是可以自行增加的,这里关注下,我的是手动添加的(这里用的是绝对路径,至少我尝试是无法设置成相对路径的)。
这个文件大家可以在..\Keil\ARM\SFD\文件夹下找到相应的文件ROM和RAM的设置:各自根据自己的实际情况来设置3.Output选项卡需要选中debug information,Browse information (碰到在C中无法增加断点的情况,个人误打误撞选中这两个后就可以了,后来实验过取消和增加确实和能不能增加断点有关系,还是建议勾选上)4.Listing选项卡和User选项卡,ASM选项卡我没有做任何更改,就略过.(如果用汇编的话,应该要设置的吧)5.C/C++选项卡我只修改了Inlcude Path 选项卡(包含的头文件路径)a.使用绝对路径。
点击右侧小按钮,然后挨个挨个找吧(不方便移植)。
4、MDK的介绍与使用

4、MDK的介绍与使⽤1.1.RVMDK简介RVMDK源⾃德国的KEIL公司,是RealView MDK的简称,RealView MDK集成了业内最领先的技术,包括µVision4集成开发环境与 RealView编译器。
⽀持ARM7、ARM9和最新的Cortex-M3核处理器,⾃动配置启动代码,集成Flash烧写模块,强⼤的Simulation设备模拟,性能分析等功能,与ARM之前的⼯具包ADS等相⽐,RealView编译器的最新版本可将性能改善超过20%。
1.2.MDK 4.12集成开发环境的组成MDK⼜称叫RVMDK,源⾃德国的KEIL公司,是RealView MDK的简称,RealView MDK 集成了业内最领先的技术,包括µVision4集成开发环境与 RealView编译器。
⽀持ARM7、ARM9和最新的Cortex-M3核处理器,⾃动配置启动代码,集成Flash烧写模块,强⼤的Simulation设备模拟,性能分析等功能,与ARM之前的⼯具包ADS等相⽐,RealView编译器的最新版本可将性能改善超过20%。
1.3.MDK⼯程的编辑1.3.1.新建RVMDK⼯程1)点击WINDOWS操作系统的【开始】?【程序】?【Keil uVision4】启动Keil uVision 或在桌⾯双击【Keil uVision4】快捷⽅式启动。
启动MDK4.12如图所⽰:2)点击之后,出现启动画⾯:1)点击“project---New uVision Project”新建⼀个⼯程2)在对话框,选择放在刚才建⽴的“新建⽂件夹”下,给这个⼯程取个名后保存,不需要填后缀:3)弹出⼀个框,在CPU类型下我们找到并选中“STMicroelectronics”下的STM32F103RB:4)出现⼀个提⽰框,是否复制STM32启动代码到⼯程⽂件夹,我们选择【是】,就可以看到STM32的启动代码⾃动添加进来了:5)到这⾥⼯程全部建⽴完毕1.3.2.建⽴⽂件建⽴⼀个⽂本⽂件,以便输⼊⽤户程序。
ARM软件编程基础

第4章 ARM Cortex-M3软件编程基础本章要点y嵌入式ARM处理器的C语言程序y嵌入式应用编程的特殊考虑y C程序运行环境和存储器模型y ARM汇编语言程序和段的概念y C语言与汇编语言的混合编程y ARM CMSIS介绍4.1 嵌入C语言编程要点C语言是一种结构化的程序设计语言,相对于汇编语言,其代码简洁、可移植性好、可读性强,便于修改和扩充。
C具有丰富的控制语句、数据类型和函数库,同时也可以方便地实现对系统硬件的直接操作。
因此适合于编制大规模、较复杂的嵌入系统软件。
ARM嵌入式系统C语言程序的核心部分为标准C语言,符合C语言基本语法。
另一方面,由于嵌入式软件的特殊性,嵌入式C语言程序在设计、调试和运行环境方面与PC 环境下的C程序有所不同。
在编程过程中需要注意嵌入式应用的特殊性。
在具体用中,软件编程与所采用的编程开发环境有关,这里讨论IAR EWARM开发环境下的编程要点。
4.1.1嵌入C语言程序1)嵌入式C语言程序的组成嵌入式C语言程序由源文件及库函数组成。
源文件包括C语言函数实现文件(.c文件)和头文件(.h文件)。
为了简化源程序,把程序中常用到的常量命名、宏定义、数据结构和函数原形定义等等单独放在一个头文件中。
而C源程序文件中包含头文件中声明的函数实现代码,变量和数据结构的实例。
一个软件项目中通常包含多个C源程序和与之对应的头文件,将系统中完成不同功能所需要的函数组分别放在不同的C源程序和头文件中,形成不同的软件模块。
程序通过头文件给出的函数原形去调用其他模块中的函数。
C语言的库函数也是通过头文件来引用的。
C语言实现文件由若干C函数实现代码组成。
一般在开始处包含要实现函数和要引用函数对应的头文件。
在一个项目中,必须有一个文件中包含C语言入口函数,这个函数通常为main()。
#include <stdio.h> //使用头文件中的C语言库函数#include <stdlib.h>int a,b=5;int main(void){int x=100, *p;char buf[20];sprintf(buf, "a= %d, b=%d\n", a,b);printf("%s", buf);p = (int *)malloc(x);if(p){printf("Allocated p at %p\n", (void *)p);free(p);}else{printf("Out of memory\n");}while(1) ;}2)ARM C语言支持的变量数据类型ARM处理器内核为32位定点CPU,基本数据运算和处理均为32位整数类型的。
ARM快速入门教程

ARM快速入门教程ARM(Advanced RISC Machines)是一种基于精简指令集计算机(RISC)架构的处理器系列,被广泛应用于嵌入式系统、移动设备和消费类电子产品中。
本文将为您提供一个简单的ARM快速入门教程,帮助您了解ARM的基本概念和使用方法。
第一部分:ARM概述(200字)第二部分:ARM架构(300字)ARM架构采用RISC设计思想,通过简化指令集和优化硬件设计来提高性能和效率。
ARM处理器具有三个基本特征:简洁的指令集、统一的寄存器文件和可变长度的指令长度。
ARM指令集包括数据传输指令(如加载和存储指令)、算术指令(如加法和乘法指令)、控制指令(如分支和跳转指令)等。
这些指令被编码为16位或32位二进制代码,以提高指令执行效率。
ARM处理器的寄存器文件使用统一的32位寄存器,这意味着所有的寄存器都可以用于存储数据或表示内存地址。
该设计简化了指令集编码,并提高了程序的灵活性和扩展性。
与其他处理器架构相比,ARM指令的长度是可变的。
ARM处理器支持16位和32位的指令,根据实际需要进行选择。
这种设计也有利于降低功耗和提高代码密度。
第三部分:ARM开发环境(400字)要开始使用ARM进行开发,您需要一个ARM开发板、一台计算机和适当的开发环境。
ARM开发板是一种嵌入式系统,其中包含一块ARM处理器和各种外围设备(如闪存、RAM、串口等)。
您可以使用开发板来加载和运行您的ARM代码,并与外部设备进行交互。
第四部分:ARM编程(300字)ARM编程可以使用汇编语言或高级语言进行。
汇编语言是一种低级编程语言,直接对应于CPU的指令集。
使用汇编语言编程可以更加深入地了解和控制ARM处理器的操作。
高级语言(如C/C++)编程可以提高开发效率和代码可读性。
您可以使用C/C++编程语言编写ARM应用程序,然后通过交叉编译器将其编译成ARM指令。
在ARM编程中,您可以使用各种库函数和驱动程序来访问外部设备(如闪存、串口、显示屏等)。
ARM入门教程.pdf

目录第1章 ARM微处理器概述 51.1 ARM-Advanced RISC Machines 51.2 ARM微处理器的应用领域及特点 51.2.1 ARM微处理器的应用领域 51.2.2 ARM微处理器的特点 61.3 ARM微处理器系列 61.3.1 ARM7微处理器系列 61.3.2 ARM9微处理器系列 71.3.3 ARM9E微处理器系列 71.3.4 ARM10E微处理器系列 71.3.5 SecurCore微处理器系列 81.3.6 StrongARM微处理器系列 81.3.7 Xscale处理器 81.4 ARM微处理器结构 81.4.1 RISC体系结构 81.4.2 ARM微处理器的寄存器结构 91.4.3 ARM微处理器的指令结构 91.5 ARM微处理器的应用选型 101.6 本章小节10第2章 ARM微处理器的编程模型 112.1 ARM微处理器的工作状态 112.2 ARM体系结构的存储器格式 112.3 指令长度及数据类型 122.4 处理器模式 122.5 寄存器组织 132.5.1 ARM状态下的寄存器组织 132.5.2 Thumb状态下的寄存器组织 152.5.3 程序状态寄存器 162.6 异常(Exceptions) 182.6.1 ARM体系结构所支持的异常类型 182.6.2 对异常的响应 182.6.3 从异常返回 192.6.4 各类异常的具体描述 192.6.5 异常进入/退出小节 202.6.6 异常向量(Exception Vectors) 202.6.7 异常优先级(Exception Priorities) 212.6.8 应用程序中的异常处理 212.7 本章小节21第3章 ARM微处理器的指令系统 223.1 ARM微处理器的指令集概述 223.1.1 ARM微处理器的指令的分类与格式 223.1.2 指令的条件域 233.2 ARM指令的寻址方式 233.2.1 立即寻址 243.2.2 寄存器寻址 243.2.2 寄存器间接寻址 243.2.3 基址变址寻址 243.2.4 多寄存器寻址 253.2.5 相对寻址 253.2.6 堆栈寻址 253.3 ARM指令集 253.3.1 跳转指令 253.3.2 数据处理指令 263.3.3 乘法指令与乘加指令 303.3.4 程序状态寄存器访问指令 323.3.5 加载/存储指令 323.3.6 批量数据加载/存储指令 343.3.7 数据交换指令 353.3.8 移位指令(操作) 353.3.9 协处理器指令 363.3.10 异常产生指令 383.4 Thumb指令及应用 383.5 本章小节39第4章 ARM程序设计基础 404.1 ARM汇编器所支持的伪指令 404.1.1 符号定义(Symbol Definition)伪指令 404.1.2 数据定义(Data Definition)伪指令 414.1.3 汇编控制(Assembly Control)伪指令 434.1.4 其他常用的伪指令 454.2 汇编语言的语句格式 484.2.1 在汇编语言程序中常用的符号 494.2.2 汇编语言程序中的表达式和运算符 494.3 汇编语言的程序结构 524.3.1 汇编语言的程序结构 524.3.2 汇编语言的子程序调用 524.3.3 汇编语言程序示例 534.3.4 汇编语言与C/C++的混合编程 554.4 本章小节56第5章应用系统设计与调试 575.1 系统设计概述 575.2 S3C4510B概述 585.2.1 S3C4510B及片内外围简介 585.2.2 S3C4510B的引脚分布及信号描述 615.2.3 CPU内核概述及特殊功能寄存器(Special Registers) 675.2.4 S3C4510B的系统管理器(System Manager) 725.3 系统的硬件选型与单元电路设计 825.3.1 S3C4510B芯片及引脚分析 825.3.2 电源电路 835.3.3 晶振电路与复位电路 835.3.4 Flash存储器接口电路 855.3.5 SDRAM接口电路 895.3.6 串行接口电路 935.3.7 IIC接口电路 945.3.8 JTAG接口电路 955.3.9 10M/100M以太网接口电路 965.3.10 通用I/O接口电路 1005.4 硬件系统的调试 1015.4.1 电源、晶振及复位电路 1015.4.2 S3C4510B及JTAG接口电路 1025.4.3 SDRAM接口电路的调试 1035.4.4 Flash接口电路的调试 1055.4.5 10M/100M以太网接口电路 1055.5 印刷电路板的设计注意事项 1055.5.1 电源质量与分配 1055.5.2 同类型信号线的分布 1065.6 本章小节 106 第6章部件工作原理与编程示例 1076.1 嵌入式系统的程序设计方法 1076.2 部件工作原理与编程示例 1086.2.1 通用I/O口工作原理与编程示例 1086.2.2 串行通讯工作原理与编程示例 1116.2.3 中断控制器工作原理与编程示例 1206.2.4 定时器工作原理与编程示例 1236.2.5 GDMA工作原理与编程示例 1276.2.6 IIC总线控制器工作原理 1336.2.7 以太网控制器工作原理 138主要特性139MAC功能模块 140 带缓冲DMA接口(Buffered DMA Interface) 144以太网控制器特殊功能寄存器(Ethernet Controller Special Registers) 147MAC寄存器(Media Access Control(MAC)Register) 154以太网控制器的操作(Ethernet Controller Operation) 160发送一个帧(Transmitting a Frame) 162接收一个帧(Receiving a Frame) 1626.2.8 Flash存储器工作原理与编程示例 1626.3 BootLoader简介 1676.4 本章小节 167 第7章嵌入式uClinux及其应用开发 1687.1 嵌入式uClinux系统概况 1687.2 开发工具GNU的使用 1707.2.1 GCC编译器 1707.2.2 GNU Make 1727.2.3 使用GDB调试程序 1777.3 建立uClinux开发环境 1807.3.1 建立交叉编译器 1817.3.2 uClinux针对硬件的改动 1847.3.3 编译uClinux内核 1857.3.4 内核的加载运行 1877.4 在uClinux下开发应用程序 1887.4.1 串行通信 1907.4.2 socket编程 1957.4 .3 添加用户应用程序到uClinux 2027.4.4 通过网络添加应用程序到目标系统 2057.5 本章小结 207 第8章ARM ADS集成开发环境的使用 2098.1 ADS集成开发环境组成介绍 2098.1.1 命令行开发工具 2098.1.2 ARM运行时库 2188.1.3 GUI开发环境(Code Warrior和AXD) 2198.1.4 实用程序 2218.1.5 支持的软件 2218.2 使用ADS创建工程 2228.2.1 建立一个工程 2228.2.2 编译和链接工程 2258.2.3 使用命令行工具编译应用程序 2298.3 用AXD进行代码调试 2308.4 本章小结 233第1章 ARM微处理器概述本章简介ARM微处理器的一些基本概念、应用领域及特点,引导读者进入ARM技术的殿堂。
MDK_ARM 下载及安装教程
教程手册MDK_ARM 下载及安装教程中国·湖南时间: 2020 年 01 月 02 日声明本教程由Brendon Tan原创发布,版权所有。
该文档仅供个人学习交流使用,不得用于其他用途,禁止商用,转载或公开使用请联系作者授权。
目录1 前言 (1)1.1 关于Keil (1)1.2 MDK-ARM介绍 (1)1.3 MDK-ARM版本 (2)1.4 许可证类型 (2)1.5 安装环境 (2)2 软件下载 (3)2.1 官网下载 (3)2.2 云盘下载 (4)3 软件安装 (5)4 结束 (12)MDK_ARM 下载及安装教程作者:Brendon Tan1 前言1.1 关于KeilKeil是一款软件,也是一家公司名。
Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。
Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel)。
有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。
其Keil C51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。
Keil公司在2005年被ARM公司收购。
之后,ARM Keil推出基于μVision界面,用于调试ARM7,ARM9,Cortex-M内核的MDK-ARM开发工具,用于控制领域的开发。
Keil虽然没有发布中文版本,但是Keil 系列软件却被中国80%以上的软硬件工程师使用,但凡与电子相关的专业,都会开始从单片机和计算机编程开始学习,而学习单片机自然会用到Keil 软件。
1.2 MDK-ARM介绍MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。
MDK-ARM专为微控制器应用而设计,而且功能强大,能够满足大多数苛刻的嵌入式应用。
keil4使用方法入门——基于ARM9的程序
首先创建一个空文件夹来存在工程(Keil不会为我们创建工程文件夹)。
Open keil > project > new uVision Project > 输入工程名称> SAVE在建立的文件夹里新建一个文本文件,格式修改为.s在project窗口中右击Source Group1,选择Add files to source group 1,在弹出的窗口中选中刚才建立的.s文件,然后点击ADD,再点击close弹出的窗口。
可以看到project窗口出现了我们添加的.s文件。
Flash > configure flash tools….,弹出如图Device选项里可选择要仿真的处理器,我们选择ARM9 (little end)小端。
Target选项里可设置ROM/RAM起始地址,这里的起始地址要跟Linker选项里的地址一致。
CODE Generation设置成ARM-mode接下来在.s文件里编写我们的ARM汇编,如下。
;在ARM状态下生成由64个整数构成的数组的初始值。
;在THUMB状态下将上述数组复制到一个新的地址,并转换成字符数组;再返回ARM状态,计算Thumb状态下所产生数组所有元素值的和。
AREA block, CODE, READONLYN EQU 64FIR EQU 0x01ENTRYstart;送数组入口地址LDR R0, =AMOV R3, #N-1 ;init counterLDR R4, =FIR ;init the first number of A arrayinit64 ;produce 64 numbers; CMP R3, #0; BEQ init_finhSTR R4, [R0], #4ADD R4, R4, #1 ;SUBS R3, R3, #1 ;递减BPL init64 ;循环;init_finhLDR R0, =ALDR R1, =BMOV R3, #N*4-1 ;init counterADRL R7, change+1BX R7 ;处理机状态切换为THUMB CODE16;复制转换change; CMP R3, #0; BEQ change_finhLDRB R2, [R0] ;读取字节; ADD R2, #65 ;转换为字符STRB R2, [R1]ADD R0, #1ADD R1, #1SUBS R3, #1BPL change;change_finhLDR R1, =BMOV R3, #N*4-1ADR R7, sum ;状态切换BX R7CODE32sumLDRB R0, [R1], #1 ;计算和,结果保存在R0中sum_loop; CMP R3, #0; BEQ sum_finhLDRB R2, [R1], #1ADD R0, R0, R2SUBS R3, R3, #1BPL sum_loop;sum_finhloopupB loopupAREA datablock, DATA, READWRITEA SPACE 64*4B SPACE 64*4END保存文件夹,然后build 。
keil for arm 入门
概述ARM7 TDMI结构的Keil开发套件采用最新设计的超豪华uVision3集成开发环境,内嵌C编译器/汇编器/工程管理器/调试器等功能功能模块,是一款稳定/可靠/高效的开发工具,适用于不同层次的的用户,完全满足从专业的应用开发工程师到初学嵌入式软件开发的学生的所有使用要求。
类似于8051的智能平台将大幅度缩短您的开发周期,各大半导体厂商的所有ARM型号将逐一得到全面支持。
Keil uVision调试器可以帮助用户准确地调试ARM器件的片内外围功能(I2C、CAN、UART、SPI、中断、I/O口、A/D转换器、D/A转换器和PWM模块等功能)。
ULINK USB-JTAG转换器将PC机的USB端口与用户的目标硬件相连(通过JTAG或OCD),使用户可在目标硬件上调试代码。
通过使用Keil uVision IDE/调试器和ULINK USB-JTAG转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。
支持Philips、Samsung、 Atmel、 Analog Devices、 Sharp、 ST等众多厂商ARM7内核的ARM微控制器。
特点:高效工程管理的uVision3集成开发环境∙ Project/Target/Group/File的重叠管理模式,并可逐级设置;∙高度智能彩色语法显示;∙支持编辑状态的断点设置,并在仿真状态下有效。
高速ARM指令/外设模拟器∙高效模拟算法缩短大型软件的模拟时间;∙软件模拟进程中允许建立外部输入信号;∙独特的工具窗口,可快速查看寄存器和方便配置外设;∙支持C调试描述语言,可建立与实际硬件高度吻合的仿真平台;∙支持简单/条件/逻辑表达式/存储区读写/地址范围等断点。
多种流行编译工具选择∙ Keil高效率C编译器;∙ ARM公司的ADS/RealView 编译器;∙ GNU GCC 编译器;∙后续厂商的编译器。
JTAG仿真器ULINK∙ USB通讯接口高速下载用户代码;∙存储区域/寄存器查看;∙快速单步程序运行;∙多种程序断点;∙片内Flash编程。
ARM嵌入式系统基础与开发教程丁文龙(2021年整理精品文档)
ARM嵌入式系统基础与开发教程丁文龙编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(ARM嵌入式系统基础与开发教程丁文龙)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为ARM嵌入式系统基础与开发教程丁文龙的全部内容。
第1章嵌入式系统概述1.填空题(1)嵌入式系统硬件平台嵌入式软件(2)硬件抽象层HAL 板级支持包BSP 设备驱动程序(3)嵌入式微处理器嵌入式微控制器嵌入式片上系统SoC2.选择题(1)B (2)A B D (3)D3.简答题(1)什么是嵌入式系统?列举几个熟悉的嵌入式系统的产品.嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统.常见的有汽车、手机、MP3等等。
(2)嵌入式系统由哪几部分组成?嵌入式系统从大的方面分嵌入式系统硬件平台和嵌入式软件两大部分,其中软件部分又具体分为若干层次。
对于包含有操作系统的嵌入式系统来讲,嵌入式系统软件结构包含4个层次:设备驱动层、实时操作系统RTOS层、应用程序接口API层、应用程序层.(3)简述嵌入式系统的特点。
系统内核小;专用性强;系统精简;软件固化;嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统;嵌入式系统开发需要开发工具和环境。
第2章 ARM体系结构1.填空题(1)Cortex-R4处理器 Cortex-A8处理器(2)ARM Thumb(3)R13 R14 R15(4)8 16 322.选择题(1)A C D (2)A (3)B C D3.简答题(1)简述ARM可以工作的几种模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小结
本章详细介绍了STM32最常用的编程软件MDK-ARM的使 用过程。通过本章的学习应能独立完成工程的建立、编译 、软件仿真和下载。另外,应掌握本章所提及的程序命名 规则及编程技巧,使编制的程序更加规范及美观。
4.2新建MDK工程
3.5.0\3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\ DeviceSupport\ST\STM32F10x\startup\arm的全部文件拷贝到STM32Template\CMSIS\startup(需先在CMSIS新建好startup文件夹)文件 夹下。我们把startup_stm32f10x_hd.s添加到我们的工程中。(高密 度芯片STM32F103ZET6的系统启动文件,程序开始的地方) 3.5.0\3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\ CoreSupport文件目录中的core_cm3.c和core_cm3.h也拷贝到STM32Template\CMSIS文件夹下。 (内核访问层的头文件和源文件) 3.5.0\3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\ DeviceSupport\ST\STM32F10x文件目录中的stm32f10x.h(寄存器定 义封装)、system_stm32f10x.c、system_stm32f10x.h拷贝到STM32Template\CMSIS文件夹下。 (设备驱动支持文件,属于外设访问 层的头文件和源文件)
创建一个工程并配置工程
选择工具栏Project->New μVision Project…新建我们的工 程文件,我们将新建的工程文件保存在桌面的STM32Template\USER文件夹下(先在电脑桌面上新建一 STM32-Template文件夹,在STM32-Template里面新建一 个USER文件夹),文件名取为STM32-DEMO,名字可 以随便取,点击保存。最终效果如下图所示。
第四章 MDK-ARM软件入门
所需软件:
1. MDK524a.EXE
2. Keil.STM32F1xx_DFP.2.1.0.pack 3. 注册机.EXE 4. ST_LINK驱动 5. USB转串口+MCUISP.EXE
4.1MDK-ARM 4.70简介
Keil公司开发的ARM开发工具MDK,是用来开发基于 Cotex-MA、Cotex-R4、ARM核的系列微控制器的嵌入 式应用程序。它适合不同层次的开发者使用,包括专业 的应用程序开发工程师和嵌入式软件开发的入门者。 MDK包含了工业标准的Keil C编译器、宏汇编器、调试 器、实时内核等组件,支持所有基于ARM的设备,易于 学习和使用,同时具有强大的功能,适用于多数要求严 苛的嵌入式应用程序开发。
■行业领先的ARM C/C++编译工具链。
■确定的Keil RTX ,小封装实时操作系统(带源码)。
■TCP/IP网络套件提供多种的协议和各种应用。
4.2新建MDK工程
如何新建MDK工程? ■安装开发环境和调试பைடு நூலகம்动程序
■创建一个工程并配置工程
■编写程序、下载、调试
4.2新建MDK工程
4.2新建MDK工程
4.2新建MDK工程
至于有些文件有个锁的图标,是因为这些都是库文件, 不需要我们修改,属性为只读。至此,工程基本建好。 接下来配置一下MDK的配置选项,单击 按钮,在弹 出来的窗口中选中“Output”选项。 点击Select Folder for Objects... 设置编译,输出文件保存 的位置。同时选上 Create HEX File 和 Browse information这两个选项框。最终效果如下图所示。
4.2新建MDK工程
4.2新建MDK工程
选择芯片型号,我们使用ST公司的STM32F103ZET6,则 选择对应型号,单击“ok”键。弹出窗口问我们是否需要 拷贝STM32的启动代码到工程文件中,这份启动代码在 M3系列中都是适用的,一般情况下我们都点击是,但我们 这里用的是ST的库,库文件里面也自带了这一份启动代码, 所以为了保持库的完整性,我们就不需要开发环境为我们 自带的启动代码了,稍后我们自己手动添加,这里我们点 击“否”。最终效果如下图所示。
4.2新建MDK工程
在单击Include Paths栏,在这里添加库文件的搜索路径, 这样就可以屏蔽掉默认的搜索路径。最终效果如下图所 示。
4.2新建MDK工程
但当编译器在我们指定的路径下 搜索不到的话还是会回 到标准目录去搜索,就像有些ANSIC C 的库文件,如 stdin.h 、stdio.h。库文件路径修改成功之后如下所示:
4.3RVMDKS使用技巧
文本美化
文本美化,主要是设置一些关键字、注释、数字等的颜色 和字体。前面我们在介绍 RVMDK新建工程的时候看到 界面如下图所示。
4.4调试与下载
接下来我们用一个实例,来说明如何参考 MDK的例子为 自己所用。这里以一个 IO口翻转为例,其实就是 LED的 闪烁,看看如何借用 MDK的代码。首先打开 D\KEIL3.80A\ARM\Examples\ST\STM32F10xFWLib\Exam ples目录,可以看到很多例子,如下图所示。
我们选择全部就可以了。然后单击 Project.Uv2,打开工 程,如下图所示:
4.4RVMDKS调试技巧 然后点击 ,编译一遍。可以看到如下图所示的编译结果:
4.4RVMDKS调试技巧
提示没有错误,没有警告。说明这个工程是可以用的。关 于这个工程是如何使用的,在readme.txt里面是有详细说 明的,在使用之前最好先看看这个说明。重点看看硬件环 境的说明,如下所示:
最终效果如下图所示。
4.2新建MDK工程
4.2新建MDK工程
此时我们新进的工程目录如下所示:
4.2新建MDK工程
到我们刚刚新建的MDK工程中,将Target改为STM32DEMO(不改也行)。最终效果如下图所示。
4.2新建MDK工程
在STM32-DEMO上右键选中Add Group…选项,新建四个组,分别 命名为STARTCODE、USER、FWlib、CMSIS。STARTCODE用它 来放我们的启动代码的,最终效果如下图。
最终效果如下图所示。
4.2新建MDK工程
4.2新建MDK工程
3.5.0\3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM 32F10x_StdPeriph_Template下的 main.c、stm32f10x_conf.h (固件库配置文件) 、stm32f10x_it.h、 stm32f10x_it.c (外设中断函数文件,用户可以加入自己的中断程序的 代码) 、system_stm32f10x.c 拷贝到STM32Template\USER目录下。
4.2新建MDK工程
4.2新建MDK工程
同样在Listing这个选项卡中,我们也点击 Select Folder listings…定位到模板中的Listing文件夹。选中C/C++选项 卡,在Define 里面输入添加USE_STDPERIPH_DRIVER (使用库函数外设驱动), STM32F10X_HD(使用高密度 STM32)。最终效果如下图所示。
4.2新建MDK工程
4.2新建MDK工程
此时工程新建成功,接下来需要添加文件,具体操作如下 所述: 在STM32-Template文件夹下,新建四个文件夹,分别为 FWlib、CMSIS、Output、Listing。原先新建的USER用来 存放工程文件和用户代码,包括主函数main.c。 FWlib用 来存放STM32库里面的inc和src这两个文件,这两个文件 包含了芯片上的所有驱动。CMSIS用来存放库为我们自带 的启动文件和一些M3系列通用的文件。CMSIS里面存放 的文件适合任何M3内核的单片机。Output用来保存软件编 译后输出的文件,Listing用来存放一些编译过程中产生的 文件。最终效果如下图所示。
4.2新建MDK工程
4.2新建MDK工程
3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F1 0x_StdPeriph_Driver的inc跟src这两个文件夹拷贝到STM32Template\FWlib文件夹中。最终效果如下图所示。 (所有 外设的头文件和源文件)
图1 MDK开发工具的组件
4.1MDK-ARM 4.70简介
MDK的特点 MDK-ARM软件主要特点如下: ■完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件 ■ULINKpro可实时分析运行中的应用程序,且能记录 Cortex-M指令的每一次执行。 ■为带图形用户接口的嵌入式系统提供了完善的GUI库支 持。
4.4RVMDKS调试技巧
4.4调试与下载
上图中提供的例程IO口翻转的例子在 GPIO目录下的 IOToggle下,我们将这个目录下面的所有文件拷贝到 D: \KEIL3.80A\ARM\Examples\ST\STM32F10xFWLib\Project 里面,这里会提示下图所示的信息:
4.4RVMDKS调试技巧
4.4RVMDKS调试技巧
接下来我们要做的就是一步步跟踪代码,然后针对你的 疑问点,打开 Peripherals里面的相关外设,查看寄存器, 看看 MDK的示例代码是如何一步步修改里面的寄存器来 实现的。对与外设的配置,MDK一般都是调用库函数实 现的,无法直接查看,这就需要你对照手册,慢慢摸索 了,根据从寄存器看到的结果,大概也就能推出 MDK是 如何实现这样的操作了。