ARM7基础实验(附原理图)
第二章ARM处理器基础ARM7课件
2、条件码标志位
在ARM状态下,绝大多数指令都是有条件执行指令;在THUMB状 态下,仅有分支指令是有条件执行指令。
各条件码标志位的具体含义
标志位 N Z
C
V
含义
运算结果的符号位。对于有符号二进制补码,结果为负时,N=1;结果为正或零时, N=0。
Z=1表示运算的结果为零(通常表示比较结果“相等”);Z=0表示运算的结果不为 零。
第二章 ARM处理器基础
一、ARM7处理器概述 二、ARM处理器的数据格式 三、处理器模式与内部寄存器 四、ARM的异常处理 五、本节附录
一、ARM7处理器概述
ARM7TDMI是一个32位的微处理器核, 基于精简指令集(RISC)的 原理设计而成的。处理器的译码结构相对简单;处理器内含集成元件 的门数相对减少,功耗降低。
2、堆栈指针 R13
寄存器R13(也称为堆栈指针或SP)有6个分组的物理寄存器。 寄存器R13通常作为堆栈指针SP。
3、链接寄存器 R14
寄存器R14(也称为链接寄存器或LR)有6个分组的物理寄存器。 寄存器R14有三种用途: 1、当发生异常时,它被设置为该异常返回地址; 2、在执行分支和链接(BL)指令时,它用于保存子程序的返回地址; 3、而在其他时候,作为一个通用寄存器来对待。
分4种情况设置C的值 - 加法运算 当运算结果产生进位时,C=1;否则C=0 - 减法运算 当运算产生借位时,C=0;否则C=1 - 包含移位操作的非加/减运算指令 C为移出值的最后一位 - 其他的非加/减运算指令 C的值通常不变
分2种情况设置V的值 - 加/减法运算指令 当发生有符号溢出时,V=1;否则,V=0 - 其他的非加/减运算指令 V的值通常不变
1.2 ARM处理器的程序与数据存储
第2章 ARM7体系结构PPT课件
支持64位乘法;
支持片上调试;
28.07.2020
支持高密度16位的Thumb指令集;
华中科技大学计算机学院
7
2.2 ARM7TDMI
三级流水线
ARM7TDMI处理器使用流水线来增加处理器指 令流的速度。这样可使几个操作同时进行,并使处 理和存储器系统连续操作,能提供0.9MIPS/MHz的 指令执行速度。
PC
PC
PC-4
PC-2
PC-8
PC-4
流水线工位 取指 译码
执行
描述
指令从存储器中取出 对指令使用的寄存器进行译码 从寄存器组中读出寄存器,执行移位 和ALU操作,寄存器被写回到寄存器 组中
28.07.2020
华中科技大学计算机学院
9
2.2 ARM7TDMI
存储器访问
ARM7TDMI处理器使用了冯·诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。 只有装载、存储和交换指令可以对存储器中的数据 进行访问。
15.协处理器接口
7.内部寄存器
16.调试接口简介
8. 程序状态寄存器
17.ETM接口简介
28.07.2020
华中科技大学计算机学院
4
2.1 ARM简介
ARM公司简介
ARM是Advanced RISC Machines的缩写,它是 一家微处理器行业的知名企业,该企业设计了大量 高性能、廉价、耗能低的RISC (精简指令集)处 理器。
ARM7TDMI的流水线分3级,分别为: 取指译码执行
28.07.2020
华中科技大学计算机学院
8
2.2 ARM7TDMI
三级流水线
正常操作过程中,在执行一条指令的同时对下 一条指令进行译码,并将第三条指令从存储器中取 出。这三条指令之间的位置关系如下表所示:
基于ARM7芯片的数码相框开发
深圳大学实验报告实验课程名称:实验项目名称:基于ARM7芯片的数码相框开发学院:计算机与软件学院专业:软件工程报告人:学号:班级:同组人:学号:班级:指导教师:实验时间:2009-10-12 ~ 2010-9-12 实验报告提交时间:教务处制以上为整个系统简要流程图,之后各种模块实现皆是为此展开。
LCD显示图片原理:在系统内会有一段存储空间与显示屏的像素点对应,通过改变该存储空间的内容,从而改变显示屏的内容,该存储空间被称为Frame Buffer,或显存,显示屏上的每一点都必然与Frame Buffer 里的某一位置对应,所以解决显示屏的显示问题,首先需要解决的是Frame Buffer 的大小以及屏上的每一象素与Frame Buffer 的映射关系。
按照显示屏的性能或显示模式区分,显示屏可以以单色或彩色显示,我们的数码相框采用的是16位色(65536 种颜色)显示。
计算机反映自然界的颜色是通过RGB 值来表示的,如果要在屏幕某一点显示某种颜色,则必须给出响应的RGB 值,Frame Buffer 为屏幕提供显示的内容,就必须能够从Frame Buffer里得到每一个象素的RGB 值,在16 位/象素的模式下,Frame Buffer 里的每个单元16 位,每个单元代表一个象素的RGB 值,如下图显示:FrameBufferSize的大小计算公式如下图,所以640×480,16 位/象素,单屏幕模式,Frame buffer 大小为614400 个字节。
我们使用image2LCD软件将图片装换成数组形式,数组开始的8个数据为图片信息,之后数组中每2个数据为一个像素点的颜色,由数组开始的8个数据得出图片大小,按顺序排列之后数据便可在LCD中显示整个图片。
由于长度问题,存在高8位与低8位,所以像素点的对应RGB值为后一个数据左移8位再加上前一个数据。
LCD像素显示主要函数:void lcd_put_pixel(int x,int y,unsigned char c){long int base_addr;base_addr = 0xa0500000;if(x<1280 && y<480)//限制图片显示范围(*((unsigned char *)(base_addr+y*1280+x))) = c;}4*4键盘捕获原理:通过调用直入键盘接口和矩阵键盘、并初始化和调用键盘寄存器,实现了4*4键盘同时使用,使得系统可以通过键盘的按键来驱动8 段数码管的点亮(在此实验中,LED的点亮是为了检验按键是否正常,在日后版本中此功能可去掉)和做出相应图片处理效果。
ARM7体系结构20130304PPT课件
第13页/共50页
简介
·Xscale简介
Intel Xscale微控制器则提供全性能、高性价比、 低功耗的解决方案,支持16位Thumb指令并集成数字 信号处理(DSP)指令。
主要应用于手提式通讯和消费电子类设备。
第14页/共50页
ARM7体系结构
• 简介
状态:32位,处理器执行字方式的ARM指令,处理器默 认为此状态;
状态: 16位,处理器执行半字方式的Thumb指令。
注意: 两个状态之间的切换并不影响处理器模式或寄 存器内容。
第26页/共50页
处理器状态
·状态切换的一个例子
使用BX指令将ARM内核的操作状态在ARM状态和 Thumb状态之间进行切换。 从ATRhuMm状b状态态切切换换到到ThAuRmMb状态下的程序代码如下:
第27页/共50页
ARM7体系结构
• 简介
• 的模块、内核和功能框图 • 处理器状态 • 处理器模式
• 内部寄存器 • 7.当前程序状态寄存器 • 体系的异常体系的存储系
统
第28页/共50页
2.5 ARM处理器模式
·简介
ARM体系结构支持7种处理器模式,分别为:用户 模式、快中断模式、中断模式、管理模式、中止模式、 未定义模式和系统模式。这样的好处是可以更好的支持 操作系统并提高工作效率。ARM7TDMI完全支持这七种 模式。
译2码.在阶第段二,个取周出期指,令P3C。指向指令2,此 时4指.在令第1进4个入周三期级,流指水令线1的执译行码完阶成段,,指同令2和 时指取令出3指流令水2线。推进一级,同时开始指令4的
取指处理。
第20页/共50页
·思考题
ARM工作原理实验指导书_图文.
嵌入式系统原理实验指导书 (Ver1.0刘永平编写西安邮电学院2009-5-10目录实验一 ARM 集成开发工具—— ADS 练习 ..............................................................5 1.1 实验目的 ......................................................................................................... 5 1.2实验设备 ......................................................................................................... 5 1.3 实验内容 ......................................................................................................... 5 1.4 实验预习要求 ................................................................................................. 5 1.5 实验步骤 ......................................................................................................... 5 1.6 思考 ............................................................................................................... 19 实验二汇编指令实验 1............................................................................................. 20 2.1 实验目的 ....................................................................................................... 20 2.2 实验设备 ....................................................................................................... 20 2.3 实验内容 ....................................................................................................... 20 2.4 实验预习要求 ............................................................................................... 20 2.5 实验步骤 ....................................................................................................... 21 2.6 实验参考程序 ............................................................................................... 23 2.7 思考 ............................................................................................................... 24 实验三汇编指令实验 2............................................................................................. 25 3.1 实验目的 ....................................................................................................... 25 3.2 实验设备 ....................................................................................................... 25 3.3 实验内容 ....................................................................................................... 25 3.4 实验预习要求 ............................................................................................... 25 3.5 实验步骤 ....................................................................................................... 26 3.6 实验参考程序 ............................................................................................... 27 3.7 思考 ............................................................................................................... 30 实验四GPIO 控制实验 ............................................................................................. 32 4.1 实验目的 ....................................................................................................... 41 4.2 实验设备 ....................................................................................................... 41 4.3 实验内容 ....................................................................................................... 41 4.4 实验原理 ....................................................................................................... 41 4.5 实验硬件原理图 ........................................................................................... 43 4.6 实验预习 ....................................................................................................... 44 4.7 实验过程 (44)4.8 实验参考程序 (44)4.9 思考 ............................................................................................................... 45 实验五UART 通信实验 . ........................................................................................... 485.1 实验目的 ....................................................................................................... 48 5.2 实验设备 ....................................................................................................... 48 5.3 实验内容 ....................................................................................................... 48 5.4 实验原理 ....................................................................................................... 49 5.5 实验硬件原理图 ........................................................................................... 49 5.6 实验预习 ....................................................................................................... 50 5.7 实验过程 ....................................................................................................... 50 5.8 实验参考程序 ............................................................................................... 51 5.9 思考 ............................................................................................................... 61 实验六中断实验 ........................................................................................................ 62 6.1 实验目的 ....................................................................................................... 62 6.2 实验设备 ....................................................................................................... 62 6.3 实验内容 ....................................................................................................... 62 6.4 实验原理 ....................................................................................................... 63 6.5 实验硬件原理图 ........................................................................................... 63 6.6 实验预习 ....................................................................................................... 63 6.7 实验过程 ....................................................................................................... 63 6.8 实验参考程序 ............................................................................................... 63 6.9 思考 (66)总论本实验包含两部分, 前面三个实验是 ARM 7指令系统指令实验, 使用 ADS 的编译器和调试器进行仿真调试,主要目的是掌握 ARM7的指令系统和开发工具的使用,理解 ARM CPU的工作过程。
嵌入式开发ARM7试验手册下
主程序流程/*************************************************************************** * 文件名:LEDCON.C* 功能:LED闪烁控制。
对发光二极管LED4进行控制,采用软件延时方法。
* 使用I/O口直接控制LED,采用灌电流方式。
* 说明:将跳线器JP4_LED4短接。
**************************************************************************** #include "config.h"#define LEDCON 0x02000000 /* P0.25引脚控制LED4,低电平点亮 *//*************************************************************************** * 名称:DelayNS()* 功能:长软件延时* 入口参数:dly 延时参数,值越大,延时越久* 出口参数:无**************************************************************************** void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--)for(i=0; i<50000; i++);}/*************************************************************************** * 名称:main()* 功能:控制LED闪烁**************************************************************************** int main(void){ PINSEL0 = 0x00000000; // 设置所有管脚连接GPIOPINSEL1 = 0x00000000;IO0DIR = LEDCON; // 设置P0.9连接的LED4控制口为输出while(1){ IO0SET = LEDCON;DelayNS(30);(1) 仿照上册“Keil for ARM实例2:A/D程序设计与电路彷真”的例子创建工程LedCon。
Proteus仿真ARM7实验手册
5
选择模板
File > New Design
Proteus 仿真 ARM7 实验手册
选择 Landscape A4 模板 > OK。
选择模板
保存(Save Design):counter
添加模板
中国科学院西安网络中心 © 2007 - ARM7 实验手册
选取元件
Library > Pick Devices/Symbol….。
Edit Component 对话框
单击 Program File 的浏览按钮 ,添加已经编译好的目标程序文件 counter.hex,OK。
中国科学院西安网络中心 © 2007 - 2008
12
单击启动仿真按钮
Proteus 仿真 ARM7 实验手册
,运行仿真,单击电路图中按键可观察到数码管数字增大或减小。
电路原理图
打开 Keil 项目
打开已有的项目:Project > Open Project…
第一章 嵌入式系统基础知识ARM7
中间层
硬件层和软件层之间为中间层,也称为硬件抽象层或板级支持包。 中间层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬 件设备的配置等功能。
中间层主要完成两部分工作: 1、嵌入式系统硬件初始化: 系统初始化过程的3个主要环节:片级初始化、板级初始化和系统级 初始化。
2、硬件相关的设备驱动程序: 硬件相关的设备驱动程序的初始化通常是一个从高到低的过程。设备 驱动程序通常不直接由BSP 使用,而是在系统初始化过程中由BSP 将他们与操作系统中通用的设备驱动程序关联起来,并在随后的应用 中由通用的设备驱动程序调用,实现对硬件设备的操作。
0x 20F = 2×162 + 0×161 + F×160 = 512 + 15 = 527
十进制数转换二进制数
十进制数转换成二进制数的降幂法。 因为:20=1,21=2,22=4,23=8,24=16,25=32,26=64, 27=128 ……。 十进制数29,利用降幂法29可以写成:
29 = 16 + 8 + 4 + 1 = 1×24 + 1×23 + 1×22 + 0×21 + 1×20 = 0b 11101
外围设备接口: LCD电路 A/D、D/A CAN
核心控制模块
嵌入式 微处理器
存储器 电源电路 时钟晶振
复位电路
硬件层结构示意图
1.嵌入式微处理器
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器大多工作在为 特定用户群所专门设计的系统中。 嵌入式微处理器的体系结构可以采用冯•诺依曼体系结构或哈佛体系结构;指 令系统可以选用精简指令系统(RISC)和复杂指令系统(CISC)。
目前国内一个被普遍认同的定义是:以应用为中心,以计算机技术为基 础,软件和硬件可裁减,以适应应用系统对功能、可靠性、成本、速度、 体积、功耗严格要求的专用计算机系统。
第7章ARM7系列芯片的外围电路设计
最小系统结构 电源电路 时钟电路 复位电路 存储器系统
第7章ARM7系列芯片的外
围电路设计
2
7.1.1 最小系统结构
复位电路
嵌入式微控制器是时钟整电个路 系统的核心,负
责整个系统的运作,但是它不能独立工
作,必须配置额外的外围电路为其提供
必电要源电的路基本条件。
输入设备
ARM MCU
所时谓钟电最路小系统结构,是指在嵌入输式出设微备控 制 到电器一源外个电路部可增以加 让尽 嵌A可 入RM能 式M少 微CU的 控电 制路 器模独复位块立电,工路 达作
2. 逻辑结构
第7章ARM7系列芯片的外
围电路设计
22
NAND FLASH的逻辑结构
CPU与NAND FLASH的通信(地址信1块息1=块32=、页32页 命令信息和数据信息)只能通过I/O[7:0]进 行传递,地址信息分别对应产生出访问存储 阵块 列块 的列第地1第页1址页 、页地第2址第页2页和块地址。 NAND FLASH以页(528Bytes)8位 为单位读 写数据,再以51块25字12节(字节32个页)为单位8位擦除数据, NAND FLASH的具体容量由FLASH上有多 少 地个址块:所列决地定址页5面,(1页2寄5字面1存2节NA寄字器存7节A器~NAD0)FL、AS页H地中I/O7址I~/包OI/7O~和0I/括O0 块三地类址
R
D31存~D储16器的控制信号主要有芯片使能、读/写、
M
CS OE
读写控制、行列地址选择和时钟等信号,由 这些信号的组合实现了对存储器的读写访问 所特有的时序约束要8求K×。8
WE
第7章ARM7系列芯片的外
围电路设计
27
7.3 键盘输入模块
ARM7嵌入式系统实践教程
一、目的
(1) 了解触摸屏系统的工作原理。 (2) 掌握触摸屏的编程方法。
2.7.1 触摸屏屏幕定位实验
二、题目
(1) 实验内容 使用触摸笔单击触摸屏,触摸点垂直对应LCD上 的一个点。在LCD上围绕此点显示一个方块,即 除了显示此点外,还在上、下、左、右、右上、 右下、左上、左下各显示一个点。 (2) 编程要求 LCD配置为图形方式,分辨率320×240,彩色模 式为256色。
工程存储路径
2.7.1 触摸屏屏幕定位实验
工程管理窗口
生成目标
五、编程
文件选项卡
链接顺序选项卡
ห้องสมุดไป่ตู้ 2.7.1 触摸屏屏幕定位实验
工程管理存储路径内容
五、编程
数据目录 工程文件
输出文件存储路径
2.7.1 触摸屏屏幕定位实验
2、打开源程序编辑窗口 (1)、在工程管理窗口中,展开User目录; (2)、双击文件main.c,打开源程序main.c编程窗口,如下图
五、编程
2.7.1 触摸屏屏幕定位实验
五、编程
3、录入源程序 在源程序编辑窗口中,录入程序代码,然后执行File|Save菜单命令,保存源程序。
2.7.1 触摸屏屏幕定位实验
五、编程
4、编译、改错 单击按钮 ,编译程序,如有错误,根据错误提示信息,修改程序。然后重复执行 编译、改错操作,直至编译通过,生成输出文件如下图:
2.7.1 触摸屏屏幕定位实验
1、LCD坐标系与触摸屏坐标系及转换 x= (x’-errx1)*280/Diffx+20 y= (y’-erry1)*200/Diffy+20
四、FM7843编程
第2章 ARM7-9体系结构
主讲人:吴贵芳
2019/11/29
电子信息工程学院
吴贵芳 easyfancy@ qq:6974784
主要内容
1.ARM简介
6.ARM内部寄存器
2.ARM7/9TDMI
7.当前程序状态寄存 器
3.ARM的模块、内 核和功能框图
8.ARM体系的异常、 中断及其向量表
• M系列为微控制核,针对成本敏感的嵌入 式控制应用
Henan University of Sci. & Tech.
11
电子信息工程学院
吴贵芳 easyfancy@ qq:6974784
内核
MIPS 32位处理器内核系列和特点
特点
M4KTM系列
针对多CPU集成的SOC应用领域为下一代消 费类产品、下一代网络和宽带产品
Henan University of Sci. & Tech.
10
电子信息工程学院
吴贵芳 easyfancy@ qq:6974784
ARMv7 Cortex系列
ARMv7版体系结构定义了3种不同的微处 理器系列:
• A系列为面向应用的微处理器核,支持复 杂操作系统和用户应用
• R系列为深度嵌入的微处理器核,针对实 时系统应用
Cortex-M3主要应用于汽车车身系统,工业控制系 统和无线网络等对功耗和成本敏感的嵌入式应用领域。 目前最便宜的基于该内核的ARM单片机售价为1美元。
Henan University of Sci. & Tech.
15
电子信息工程学院
吴贵芳 easyfancy@ qq:6974784
Henan University of Sci. & Tech.
arm7单片机编程实例,ARM7之输入-输出端口GPIO编程教程
arm7单片机编程实例,ARM7之输入/输出端口GPIO编程教程一、输入/输出端口GPIO编程一(01)、一位数码管静态显示(通过74HC595实现)1、管脚连接模块首先介绍一下LPC2106的相关的管脚~~特性:可以实现独立的管脚配置应用:管脚连接模块的用途是将管脚配置为需要的功能(这一章节主要就是介绍GPIO功能~~别的会在接下来的章节中分别予以介绍~~)描述:管脚连接模块可以使所选管脚具有一个以上的功能。
配置寄存器控制多路开关来连接管脚与片内外设。
外设在激活和任何相关只读使能之前必须连接到适当的管脚。
任何使能的外设功能如果没有映射到相应的管脚,则被认为是无效的。
寄存器的描述:管脚连接模块包括两个寄存器:管脚功能寄存器0:(PINSEL0)PINSEL0寄存器按照下表当中的设定来控制管脚的功能。
IODIR寄存器中的方向控制位只有在管脚选择为GPIO的功能时才有效(也就是本章要讲述的)。
对于其它功能,方向是自动控制的。
管脚功能寄存器1:(PINSEL1)PINSEL1寄存器按照下表来设定控制管脚的功能。
IODIR寄存器中的方向控制位只有在管脚选择GPIO功能时才有效。
对于其它功能,方向是自动控制的。
在复位时拉低DBGSEL时,只要管脚P0.17-P0.31的功能控制有效。
管脚功能寄存器值:PINSEL寄存器控制器件管脚的功能。
如下图。
每一对寄存器位对应一个特定的器件管脚。
只有当管脚选择为GPIO功能时,IODIR寄存器的方向控制位才有效。
其它功能的方向是自动控制的。
每个派生期间通常具有不同的管脚分布,因此每个管脚可能有不同的功能。
2、GPIO特性:1)单个位的方向控制2)单独控制输出的置位和清零3)所有I/0口在复位后默认为输入应用:1)通用I/0口2)驱动LED或者其他指示器3)驱动片外器件4)检测数字输入管脚描述:寄存器描述:GPIO包含4个寄存器,如下表:GPIO引脚值寄存器IOPIN:GPIO输出置位寄存器IOSET:GPIO输出清零寄存器:GPIO方向寄存器:然后就是今天要做的实验:一位数码管的静态显示用IAR for ARM就是调不好~~换用了Keil浪费我大把时间了早知道就早用Keil了回头还得再调试一下IAR然后就是程序了~~MDK1_1.c(先是主程序吗~~你懂得)//------------------------------------------------------------------------------//LED数码管显示//通过I/O模拟同步串行接口与74HC595进行连接,控制74HC595驱动LED数码管显示//------------------------------------------------------------------------------#includelpc210x.htypedef unsigned long uint32;typedef unsigned char uchar;#define SPI_IO 0x00000150 //SPI接口的I/O设置字uchar const seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0.82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//------------------------------------------------------------------------------//延时函数void delay(uint32 z){uint32 i;for(;z》0;z--)for(i=0;i《50000;i++);}//------------------------------------------------------------------------------//mainint main(){uchar i;PINSEL0=0X00000000;PINSEL1=0X00000000; //设置左右引脚连接GPIOIODIR=SPI_IO; //设置SPI控制口为输出~~由于这是模拟的,所以需要自己设置方向位while(1){for(i=0;i《16;i++){HC595_send_data(seg[i]);delay(1);}}}74HC595.c//------------------------------------------------------------------------------//74HC595模拟SPI通信,便于调用#includelpc210x.htypedef unsigned long uint32;typedef unsigned char uchar;#define SPI_CS 0x00000100 //P0.8模拟片选#define SPI_DA 0x00000040 //P0.6模拟数据传输口#define SPI_CLK 0x00000010 //P0.4模拟CLK//------------------------------------------------------------------------------//向74HC595发送一个字节函数(发送数据时,高位在前)//还是大概介绍一下74HC595吧://74HC595是具有8位移位寄存器和一个存储器,三态输出功能。
嵌入式微处理器内核原理-ARM7
执行 存储器 指令的 有限状态机 每一条指令规定了状态的变化,并指定随后执行哪一条指令
➢ 存储程序处理器:把指令和数据存放在存储器中 ➢ 两种处理器
计算机处理器:不同时间运行不同的程序 嵌入式微处理器:不同时间运行固定的程序,可用于不同的应用范围
FF..FF1 6
ins truc tions
2015
No. 4
AMP公司接插件系列 AI公司PCB插座系列
AMP & AI
第二讲 ARM处理器体系结构和编程
➢ 第一讲 嵌入式系统概述复习
➢ 微处理器基本概念
➢ ARM处理器的历史和设计思想 ➢ ARM7TDMI 处理器体系架构
2015
No. 5
微处理器原理的重要性
程序基础 操作系统 编译器
2015
No. 11
控制器的组成与主要功能
控制器的组成:
➢ 指令部件 程序计数器 指令寄存器 指令译码器
➢ 时序部件 脉冲源 节拍信号发生器 启停控制逻辑
➢ 微操作信号发生器 ➢ 中断控制逻辑
控制器的主要功能:
从内存中取出一条指令,并指出下 一条指令在内存中的位置
对指令的操作码进行译码,并产生 相应的操作控制信号。比如,一次 内存读写操作,或一个算术逻辑运 算操作等。
嵌入式 数据库
多媒体 编解码库 其他中间件
启动代码
硬件抽象层(HAL),硬件驱动程序
嵌入式处理器为核心的硬件平台
嵌入式系统的硬件构成
TI Power Trend嵌入式电源方案 MAXIM 电源芯片 Liner 公司电源芯片 NS 公司电源芯片
怀特电子高可靠性存储器系列 IDT公司FIFO及双口RAM Cypress公司高速SRAM系列 现代电子公司SDRAM系列 Intel公司 大容量Flash系列
arm7(lpc2138)实验例程
微机原理实验报告实验名称:步进电机控制院系:物理与机电工程学院专业班级:0 8电子信息工程学号:**********学生姓名:***指导教师:完成时间:2011年5月5日报告成绩:一、实验目的1、掌握四相五线步进电机的工作原理2、以单四拍的方式用LPC2138与L297、L298控制步进电机二、实验原理1、用软件的方式通过对P1_21与P1_22的控制,并通过L297、L298驱动5V直流步进电机,原理图如下:2、同时用按键产生外部中断控制电机的转速与转向。
转速的控制主要是脉冲的频率,为了控制的简单,可以直接利用软件延时的方法实现。
3、程序再增加上位机控制步进电机指令4、程序流程图三、实验设备微机、EasyARM2131-LYXY V1.14学习开发板四、实验效果上电时步进电机按初始化的速度转动,按下4个按键分别执行增、减速;正、反转,同时上位机显示控制指令。
五、实验总结1、此次实验由于不是精细控制步进电机的步进量,所以只用简单的延时程序就可以控制速度,但要注意延时变量的取值避免步进电机出现失步现象。
2、写中断服务程序时记得清除相应的中断标志,且一定不要忘了VICVectAddr =0x00;即通知VIC中断处理结束。
一开始实验时由于少了此句,程序一直不正常。
七、程序清单#include "config.h"int DelayTime=60; //延时参数typedef struct UartMode{uint8 datab; //字长度,5/6/7/8可选uint8 stopb; //停止位,1/2可选uint8 parity; //奇偶校验位,0:无校验;1:奇检验;2:偶检验}UARTMODE;uint8 rcv_buf; //UART0数据接收缓冲区uint8 rcv_new; //接收数据标志void delay(int dly){int i,j;for(i=0; i<dly; i++)for(j=0; j<1200; j++);}//串口0数据发送函数void UART0_SendByte(uint8 dat){U0THR=dat;while((U0LSR&0x20)==0); //等待数据发送完毕}//串口0初始化函数uint8 UART0_Init(uint32 baud, UARTMODE set){uint32 bak;//参数过滤if((baud==0)||(baud>115200))return(0);if((set.datab<5)||(set.datab>8))return(0);if((set.stopb==0)||(set.stopb>2))return(0);if(set.parity>4)return(0);//设置串口的波特率U0LCR=0x80; //DLAB=1bak=(Fpclk>>4)/baud;U0DLM=bak>>8;U0DLL=bak&0xff;//设置串口模式bak=set.datab-5; //设置字长if(set.stopb==2)bak|=0x04; //判断是否为2位停止位if(set.parity!=0){set.parity=set.parity-1;bak|=0x08;}bak|=set.parity<<4; //设置奇偶校验U0LCR=bak;return(1);}//中断初始化函数void Int_Init(void){EXTMODE=0x00; //设置外部中断为电平触发IRQEnable(); //使能IRQ中断VICIntSelect=0x00000000; //设置所有分配为IRQ中断VICVectCntl4=0x20|0x0e; //分配外部中断4到向量中断0VICVectCntl1=0x20|0x0f; //分配外部中断1到向量中断0VICVectCntl2=0x20|0x10; //分配外部中断2到向量中断0VICVectCntl3=0x20|0x11; //分配外部中断3到向量中断0VICVectCntl0=0x20|0x06; //分配Uart0中断到向量中断0//设置中断服务程序地址VICVectAddr4=(uint32)IRQ_Eint0;VICVectAddr1=(uint32)IRQ_Eint1;VICVectAddr2=(uint32)IRQ_Eint2;VICVectAddr3=(uint32)IRQ_Eint3;VICVectAddr0=(uint32)IRQ_UART0;EXTINT=0x0f; //清除所有外部中断标志VICIntEnable=(1<<0x0e)|(1<<0x0f)|(1<<0x10)|(1<<0x11)|(1<<0x06);//使能所用到的中断}//工作模式设置函数void SetWorkMode(char WorkMode){//WorkMode:控制信号// '+':加速 '-':减速'<':逆时针'>':顺时针switch(WorkMode){case '+':if(DelayTime>20)DelayTime=DelayTime-20; //减少延时,即加速break;case '-':if(DelayTime<100)DelayTime=DelayTime+20; //增加延时,即减速break;case '<':IO0CLR=0x01<<21; //设置的步进电机的运转方向为逆时针break;case '>':IO0SET=0x01<<21; //设置的步进电机的运转方向为顺时针break;default :break;}}//外部中断0服务程序void __irq IRQ_Eint0(void){IO0CLR=0x01<<21; //设置的步进电机的运转方向为逆时针while((EXTINT&0x01)!=0){EXTINT=0x01; //清除中断标志}VICVectAddr=0;}//外部中断2服务程序void __irq IRQ_Eint2(void){if(DelayTime>20)DelayTime=DelayTime-5; //减少延时,即加速while((EXTINT&0x04)!=0){EXTINT=0x04; //清除中断标志}VICVectAddr=0;}//外部中断1服务程序void __irq IRQ_Eint1(void){IO0SET=0x01<<21; //设置的步进电机的运转方向为顺时针while((EXTINT&0x02)!=0){EXTINT=0x02; //清除中断标志}VICVectAddr=0;}//外部中断3服务程序void __irq IRQ_Eint3(void){if(DelayTime<100)DelayTime=DelayTime+5; //增加延时,即减速while((EXTINT&0x08)!=0){EXTINT=0x08; //清除中断标志}VICVectAddr=0;}//串口0接收中断服务程序void __irq IRQ_UART0(void){if((U0IIR&0x0f)==0x04)rcv_new=1; //设置接收到新的数据标志rcv_buf=U0RBR; //读取FIFO的数据,并清除中断VICVectAddr=0;}int main (void){UARTMODE set;set.datab=8; //设置字长度为8位set.stopb=1; //设置停止位为1位set.parity=0; //设置检验方式为无校验rcv_new=0; //接收数据标志初始化PINSEL0=0x0005c0c5;PINSEL1=0x00000301;IO0DIR=0x03<<21; //设P0.21-P0.22为输出UART0_Init(9600, set); //串口初始化U0FCR=0x01; //使能FIFO,并设置触发点为1字节U0IER=0x01; //允许RBR中断,即接收中断Int_Init(); //中断初始化(外部中断、串口中断)while(1){if(rcv_new==1){rcv_new=0;SetWorkMode(rcv_buf);//根据输入控制信号改变步进电机的工作模式UART0_SendByte(rcv_buf); //把键盘输入发回虚拟终端回显}IO0SET=0x01<<22;delay(DelayTime);//DelayTime初始值设定为60IO0CLR=0x01<<22;delay(DelayTime);}return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.ADC数模转换——ARM的Proteus实验LED闪烁——ARM的Proteus实验实验原理ARM(LPC21XX)的一个I/O口接LED,通过给它送0和1来设置LED的亮和灭。
Proteus仿真电路图步骤KEIL1.创建新工程2.选择ARM型号(KEIL会自动生成启动代码startup.s)3.添加源文件,编写程序4.设置项目选项(是否输出hex、lst文件,设置linker script)Proteus1.绘制电路图2.载入程序3.仿真C语言源程序/******************************************************************************//**//* led.c: 用ARM点亮一个led并闪烁,有点浪费…… *//**//******************************************************************************/#include <LPC21xx.H>/*********************************************************************************函数名: delay()**描述: 软件延时********************************************************************************/void delay (void) {unsigned volatile long i,j;for(i=0;i<60000;i++)for(j=0;j<5;j++);}int main(void) {PINSEL0 = 0; /*设置引脚为GPIO */IO0DIR = 0x000001; /*将P0.0设置为输出 */IO0SET = 0x000001; /*将P0.0置1,也就是让led灭 */while (1) {IO0CLR = 0x000001;delay();IO0SET = 0x000001;delay();}}开关控制LED——ARM的Proteus实验实验原理ARM的P0.1口接按钮,再通过P0.0控制LED的亮、灭。
本实验的电路图以及实验均在上一个实验基础之上修改。
其中电路图只多了一个开关。
Proteus仿真电路图实验步骤略(与上一实验相同)C语言源程序/******************************************************************************//**//* led.c: 用ARM实现开关控制led并亮灭,还是有点浪费…… *//**//******************************************************************************/#include <LPC21xx.H>#define P0_1 0x02; /*P0.1*/ /*********************************************************************************函数名: delay()**描述: 软件延时********************************************************************************/void delay (void) {unsigned volatile long i;for(i=0;i<10000;i++);}int main(void) {int p01State;PINSEL0 = 0; /*设置引脚为GPIO */IO0DIR = 0x000001; /*将P0.0设置为输出 */IO0SET = 0x000001; /*将P0.0置1,也就是让led灭 */while (1) {p01State = IO0PIN&P0_1; /*读取开关状态*/if(p01State == 0){IO0CLR = 0x000001;delay();}else{IO0SET = 0x000001;delay();}}}LCD——ARM的Proteus实验实验原理ARM的P0.0口到P0.10口接LCD,P0.11接LED。
每过一段时间LED状态改变,LCD显示LED的状态。
Proteus仿真电路图C语言源程序#include <LPC21XX.H>#define rs (1<<8)#define rw (1<<9)#define en (1<<10)#define busy (1<<7) //P0.7typedef unsigned char uint8;uint8 ledDown[]={"The LED is down!"};uint8 ledUp[]={"The LED is up!"};void waitLCD() /*等待LCD*/ {IO0DIR=0xf00;while(1){IO0CLR=rs;IO0SET=rw;IO0SET=en;if(!(IO0PIN & busy))break;IO0CLR = en;}IO0DIR=0xfff;}void lcdOp(uint8 dat)/*送LCD控制码*/{waitLCD();IO0CLR=rs;IO0CLR=rw;IO0CLR=0xff;IO0SET=dat;IO0SET=en;IO0CLR=en;}void lcdData(uint8 dat)/*送LCD显示数据*/{waitLCD();IO0SET=rs;IO0CLR=rw;IO0CLR=0xff;IO0SET=dat;IO0SET=en;IO0CLR=en;}void lcdInit(void)/*初始化LCD,DataSheet里有建议的初始化代码*/ {/* LCD配置为两行,5*7字体 */lcdOp(0x38);lcdOp(0x38);lcdOp(0x06);lcdOp(0x0E);lcdOp(0x01);/* LCD配置为一行,5*10字体lcdOp(0x34);lcdOp(0x34);lcdOp(0x06);lcdOp(0x0E);lcdOp(0x01);*/}void lcdDisplay(uint8 addr,uint8 *p)/*LCD显示字符串*/{lcdOp(addr);while(*p !='\0'){lcdData(*(p++));}}void lcdClear(void)/*LCD清屏*/{lcdOp(0x01);}void delay (void) {unsigned volatile long i,j;for(i=0;i<60000;i++)for(j=0;j<10;j++);}int main(void){lcdInit();/*初始化LCD显示*/IO0DIR=0xfff;//设置为输出口IO0CLR=0xfff;while (1) {IO0CLR = 0x000800;lcdDisplay(0x80,ledUp);delay();lcdClear();IO0SET = 0x000800;lcdDisplay(0x80,ledDown);delay();lcdClear();}}UART——ARM的Proteus实验实验原理ARM的P0.0口接LED,串口接Proteus的虚拟终端。
每隔一段时间改变一次LED的状态,并且在串口上输出LED的当前状态。
Proteus仿真电路图C语言源程序#include <LPC21xx.H>#include "uart.h"#define CR 0x0Dchar ledDown[]={"The LED is down!\n"};char ledUp[]={"The LED is up!\n"};int putchar (int ch) {/* 向串口输出一个字符 */if (ch == '\n') {while (!(U1LSR & 0x20));U1THR = CR; a}while (!(U1LSR & 0x20));return (U1THR = ch);}void delay (void) {unsigned volatile long i,j;for(i=0;i<60000;i++)for(j=0;j<5;j++);}void serialPuts(char *p){/* 向串口输出字符串 */while (*p != '\0'){putchar(*p++);}}int main (void) {/* 开始初始化串口 */PINSEL0 = 0x00050000;/* 设置引脚,开串口功能 */U1LCR = 0x83;/* 8位数据,无效验,一个停止位 */U1DLL = 97;/* VPB 15MHz的时候波特率为9600 */U1LCR = 0x03;/* DLAB = 0 *//* 结束初始化串口 */IO0DIR = 0x000001;/*将P0.0设置为输出 */while (1) {IO0CLR = 0x000001;serialPuts(ledUp);delay();IO0SET = 0x000001;serialPuts(ledDown);delay();}}Eint1外部中断——ARM的Proteus实验实验原理ARM的P0.25接一个LED,引脚设置时连接EINT1功能,按钮触发中断。
中断服务程序另LED快速闪烁。
Proteus仿真电路图C语言源程序#include <LPC21XX.H>#define LEDCON 0x02000000/*LED接在P0.25上*/typedef unsigned int uint32;void IRQ_Eint1(void) __attribute__ ((interrupt));/*声明某函数为中断服务子程序的方法*/uint32 times = 100;/*循环次数默认为100*/void IRQ_Eint1(void){times = 5;while((EXTINT&0x02)!=0){EXTINT=0x02; //清除EINT1中断标志}VICVectAddr=0;}void delay100(void) {unsigned volatile long i,j;for(i=0;i<10000;i++)for(j=0;j<times;j++);if(times > 100){times--;}else if(times <100){times++;}}int main(void){IO0DIR = LEDCON;PINSEL0 = 0x20000000;/*引脚选中EINT1功能*/PINSEL1 = 0x00000000;/*以下为中断控制部分*/VICIntSelect=0;/*全部中断设置为IRQ,若某位为1是FIQ*/VICIntEnable=0x00008000;/*使能EINT1,EINT为第15位*/VICVectCntl1=0x2F;/*0xF,15号中断*/VICVectAddr1=(int)IRQ_Eint1;/*设置中断服务子程序*/EXTINT=0x07;while (1) {IO0CLR = LEDCON;delay100();IO0SET = LEDCON;delay100();}}多个外部中断——ARM的Proteus实验实验原理ARM开启两个中断源Eint1与Eint2,分别用一个按钮来控制。