当前位置:文档之家› ARM的中断实验

ARM的中断实验

ARM的中断实验
ARM的中断实验

嵌入式实验报告

课程名称嵌入式成绩实验项目ARM的中断实验指导教师曲培树

学生姓名张健秀学号 201000803026班级专业 10电子本

实验地点综合楼226 实验日期2012年 12 月 7日

一、实验目的

1.掌握ARM9的中断原理,能够对S3C2410的中断资源及其相关中断寄存器的进行合

理配置

2. 掌握对S3C2410的中断的编程的方法

二、实验内容

1. 学习响应外部中断请求的配置方法,并通过响应定时器中断,执行中断服务子程序

使CPU板上的LED指示灯LED1、LED2闪烁。

三、实验设备

1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆。

2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,

仿真调试驱动程序

四、ARM的中断原理

在ARM中,有两类中断,一类是IRQ,一类是FIQ,IRQ是普通中断,FIQ是快速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。FIQ的优先级高于IRQ。同时,它们都属于ARM的异常模式,当一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下,PC指针进而跳入异常向量的地址处,若是IRQ中断,则PC指针跳到0x18处,若是FIQ中断,则跳到0x1C处。异常向量地址处,一般存有中断服务子程序的地址,所以,接下来PC指针跳入中断服务子程序中。当完成中断服务子程序后,PC指针会返回到被打断的程序的下一条地址处,继续执行程序。这就是ARM中断操作的基本原理。

但是,通常由于生产ARM处理器的各厂家都集成了很多中断请求源,比如,串口中断、AD中断、外部中断、定时器中断、DMA中断等等,所以,很多中断可能同时请求中断,因此,为区分它们,更准确的完成任务,这些中断都有相应的优先级别,以及当发生中断时,它们都有相应的中断标志位,通过在发生中断是判断中断优先级,和访问中断标志位的状态来识别到底哪一个中断发生了。

五、三星的2410 ARM处理器的中断的使用

首先,ARM920T CPU 的PSR寄存器中的F位为1,则CPU不会响应中断控制器的FIQ中断,同样,ARM920T CPU 的PSR寄存器中的I位为1,则CPU也不会响应中断控制器的IRQ中断,为使CPU响应中断,须在启动代码中将其设为0,以及使INTMSK 寄存器中的相应位置0。

S3C2410共有56个中断源,有26个中断控制器,外部中断EXTIN8~23共用一个中断控制器,外部中断EXTIN4~7共用一个中断控制器,9个UART中断分成3组,共用3个中断控制器,ADC和触摸屏共用一个中断控制器。见表2-6-2

中断的优先级是由主组号和从ID号的级别控制的。

中断优先级产生模块如下图所示:

图2-6-1

七、实验数据

TP60未通话:TP60通话后:

TP61未通话:TP61通话后:

TP62 未通话:TP62通话后:

TP63未通话:TP63通话后:

从上图可以看出,中断优先级产生模块共有7个判优器,每个判优器是否使能由寄存器PRIORITY[6:0]决定,每个判优器下面有4~6个中断源,这些中断源对应着REQ0~REQ5这6个优先级,这些优先级由寄存器PRIORITY[20:7]的相应位决定。

要正确使用S3C2410的中断控制器,必须设置如下的寄存器,如下表2-6-1所示:

表2-6-1

中断挂起寄存器主要是提供哪个中断有请求的标志寄存器,相应位置1,则说明有该中断请求产生。若相应位为0,则无该中断请求产生。

中断模式寄存器主要是配置该中断是IRQ型中断,还是FIQ型中断。

中断屏蔽寄存器的主要功能是屏蔽相应中断的请求,即使中断挂起寄存器的相应位已经置1,若中断屏蔽寄存器相应位置1,则中断控制器屏蔽该中断请求,也无法让CPU响应该中断。

INTPND为向量IRQ中断服务挂起状态寄存器,当向量IRQ中断发生时,该寄存器内只有一位被设置,即只有当前要服务的中断标志位置位。通过读它的值,就能判断出哪个中断发生了。在INTPND中相应位写入数据,就能清除掉中断挂起寄存器中的中断请求标志位,以使CPU不再响应中断,其实,CPU响应中断是看中断挂起寄存器中的请求标志位有没有置位,若置位,又屏蔽位打开,ARM920T的PSR的F或I为也打开,那么,CPU就响应中断,否则,有一个条件不成立,则CPU无法响应中断。

表2-6-2

六、中断编程实例

在ADS1.2的开发环境下,打开HARDWARE/ADS/实验六目录下的Interrupt.mcp 项目,在Application/SRC/Main.c中可以看到,主程序中,在进行目标板初始化后,程序进入死循环,等待中断!在Startup2410/src/target.C文件中包括对要使用的中断控制器的初始化程序,CPU响应了该中断后的中断服务子程序。

该项目的程序流程是,按下程序启动后,初始化定时器1,设定定时器的中断时间,然后,等待定时器中断,当定时器中断到来时,就会进入定时器中断服务子程序,而中断服务子程序会把LED1和LED2灯熄灭或点亮,从现象中看到LED1和LED2 灯忽闪一次,则说明定时器发生了一次中断。最后,关闭中断请求,等待下一次的中断的到来。为使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR 中的I位,以及相应的中断屏蔽寄存器中的位。

打开相应的中断屏蔽寄存器中的位,是在target.C中的void Timer1INT_Init(void)函数中,在做了这些准备后,就可以等待中断的到来了。

void Timer1INT_Init(void) { //定时器接口使能

if ((rINTPND& BIT_TIMER1)) {

rSRCPND |= BIT_TIMER1;

}

pISR_TIMER1 = (int)Timer1_ISR;

rINTMSK&= ~(BIT_TIMER1); //开中断;

}

TIMER1INT_Init()函数已在Target_Init()中调用。

详见/实验程序/HARDWARE/ADS/实验六目录下的Interrupt.mcp源代码注释。

七、实验步骤

1.本实验仅使用实验教学系统的核心CPU板。在进行本实验时,LCD电源开关,音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。

2.在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆。

3.检查连接是否可靠,可靠后,接入电源线,系统上电。

4.打开ADS1.2开发环境,从里面打开\实验程序\HARDWARE\ADS\实验六\Interrupt.mcp 项目文件,进行编译。

5.编译通过后,进入ADS1.2调试界面,加载\实验程序\HARDWARE\ADS\实验六\Interrupt_Data\Debug中的映象文件程序映像Interrupt.axf。

6.在ADS调试环境下全速运行映象文件。观察LED1和LED2的变化!LED1和LED2灯会由于定时中断的1秒钟发生一次,而一秒钟闪烁一次!也可以改变闪烁的频率,即改变Startup2410\target.c文件内的void Timer1_init(void)函数里的rTCNTB1 = 48828;的赋值,数字量越小,闪烁频率越快。编译全速运行,观看结果,看闪烁频率是否发生了改变!这是对GPIO口操作的结果。具体实现见程序。

八、实验数据

实验板上的LED1和LED2灯交替闪烁

九、实验结论

1.掌握了ARM9的中断原理,能够对S3C2410的中断资源及其相关中断寄存器的进行

合理配置

2. 掌握了对S3C2410的中断的编程的方法

3.进一步熟悉了ADS1.2集成开发环境,及仿真调试驱动程序

4.深入了解了EL-ARM-830教学实验箱

嵌入式实验报告

嵌入式实验报告 学院:信息工程学院 专业:计算机科学与技术班级:计算机班 姓名: 学号: 指导老师:

实验目录 实验一嵌入式系统开发环境实验 (2) 实验二系统节拍定时器实验 (12) 实验三 GPIO控制实验 (16) 实验四外部中断实验 (19) 实验五串口通讯实验 (23)

实验一嵌入式系统开发环境实验 【实验目的】 1.熟悉RealView MDK集成开发环境以及使用方法。 2.熟悉嵌入式系统软件设计方法和流程。 【实验内容】 1. 通过例程熟悉、掌握嵌入式系统的编辑、编译、调试、下载及运行过程。 2. 建立自己的工程文件,在开发板板上调试程序。 【实验步骤】 (一)程序安装 1. 建议在安装之前关闭所有的应用程序,双击安装文件,弹出如图对话框,Next 2.默认选择C盘文件下安装。

3.这样就在c盘底下出现keil文件夹。 4.单击选择菜单“File”-->"License Management" 将弹出下面一张图的界面:复制其中CID号,以便在粘贴到下一步中的破解软件。 5.复制CID

6.运行破解软件,将出现下面一张图的界面,把上步复制的CID号粘贴到相应位置,其他选项如图,然后点击“Generate”按钮,然后复制产生的序列号,粘贴到上一步的下面一张图的LIC输入框中,然后点击右侧的Add LIC,即可完成破解。 7.安装文件夹中的jlink驱动。 (二)工程创建、编译 使用Realview MDK创建、完成一个新的工程只需要以下几个环节: →创建工程并选择处理器→选择工具集→创建源文件→配置硬件选项→配置对应启动代码→编译链接→下载→调试。 1.创建工程并选择处理器 选择Project→New Project…,输入创建的新工程的文件名,即可创建一个新的工程。 2.创建一个新工程时,需要为工程选择一款对应处理器,在NXP 列表下选择LPC1768 芯片。然后点击OK。接下来出现的对话框选择“是或者也可以通过单击Project→Select Device for Target…在本次课程中,我们选择

嵌入式实验报告(51单片机)

实验报告内容 实验题目:P口输出实验 实验目的:通过实验了解P口做为输入输出方式使用时,CPU对P口的操作方式 实验要求:控制8个LED灯,完成从左到右然后再从右到左再从左到右依次的循序流水 实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 程序源代码: #include "reg52.h" #include typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay(u16 i) { while(i--); } void main() { u8 i; led=0x7f; delay(50000); while(1) { for(i=0;i<7;i++) { led=_cror_(led,1); delay(50000); } for(i=0;i<7;i++) { led=_crol_(led,1); delay(50000); } } } 实验结果分析:

实验日期:2017.10.24

成绩评定: □优秀(100-90分) □良好(89-80分) □中等(79-70分) □及格(69-60分) □不及格(60-0分) 教师签名: 年月日

实验报告内容 实验要求:利用动态扫描和定时器0在数码管上显示出从200开始以1/10秒的速度往下递减直至100并保持此数,以此同时利用定时器1以500MS速度进 行流水灯从上至下移动,当数码管上数减到停止时LED灯全亮。 实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 程序源代码: #include #include #define uint unsigned int #define uchar unsigned char sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; uchar t0=0,t1,temp; uchar temp,bai,shi,ge; uint shu=200; uchar code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39 ,0x5e,0x79,0x71}; void delay(uint i) {while(i--);} void xianshi(uchar bai,uchar shi,uchar ge) {LSA = 0;LSB=0;LSC=0; P0=smgduan[ge]; delay(250); P0=0x00; LSA=1;LSB=0;LSC=0; P0=smgduan[shi]; delay(250); P0=0x00; LSA=0;LSB=1;LSC=0; P0=smgduan[bai]; delay(250); P0=0x00; }

《嵌入式系统原理与应用》实验报告02-外部中断实验

《嵌入式系统原理与应用》实验报告实验序号:2 实验项目名称:外部中断实验 学号XXX 姓名XXXX 专业、班计算机科学与技术 实验地点实验楼1#416 指导教师XXXXX 实验时间2013-4-7 一、实验目的 1. 掌握LPC2200 专用工程模板的使用; 2. 熟悉LPC2000 系列ARM7 微控制器的VIC和外部中断的使用; 3. 熟悉LPC2000 系列ARM7 微控制器的GPIO控制。 二、实验设备(环境)及要求 硬件:PC机; 软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。 三、实验内容与步骤 实验内容: 设置P0.20 脚为EINT3 功能,初始化为向量中断,并设置为下降沿触发模式,然后等待外部中断。中断服务程序将LED灯控制输出信号取反,然后清除中断标志并退出中断。 实验步骤: 四、实验结果与数据处理 1.实验效果截图

2.源程序 #include "config.h" void delay(int i) { int j; for(j=0;j

EXTINT=0x0F; VICVectAddr=0; } int main (void) { PINSEL0=0xFFFFFFCF;//set P0.2 to be GPIO PINSEL1=(PINSEL1&0xFFFFFFCF)|0x00000300;//set p2.0 to be a Ext_INT IO0DIR=0x00000004; EXTMODE=EXTMODE|0x01; EXTPOLAR=EXTPOLAR&0x00; VICIntSelect=VICIntSelect&(~(1<<17)); VICVectCntl0=0x20|17; VICVectAddr0=(uint32)EINT3_ISR; VICIntEnable=(1<<17); while(1); return 0; } 3.流程图 开始 设置delay函数 设置EINT3_ISR函数

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告 篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验 《嵌入式系统原理与接口技术》实验报告 实验序号:4实验项目名称:看门狗实验 1 2 3 4 篇二:嵌入式实验报告 目录 实验一跑马灯实验................................................. (1) 实验二按键输入实验................................................. .. (3)

实验三串口实验................................................. . (5) 实验四外部中断实验................................................. .. (8) 实验五独立看门狗实验................................................. (11) 实验七定时器中断实验................................................. (13) 实验十三ADc实验................................................. .. (15) 实验十五DmA实验................................................. .. (17) 实验十六I2c实验................................................. .. (21) 实验十七spI实

arm嵌入式实验报告完整版

arm嵌入式实验报告完整版 篇一:ARM嵌入式系统实验报告1 郑州航空工业管理学院 嵌入式系统实验报告 第 赵成,张克新 院姓专学 系:名:业:号:电子通信工程系周振宇物联网工程 121309140 电子通信工程系 XX年3月制 实验一 ARM体系结构与编程方法 一、实验目的 了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。 二、实验内容

1.ADS1.2 IDE的安装、环境配置及工程项目的建立;2.ARM汇编语言程序设计(参考附录A): (1)两个寄存器值相加;(2)LDR、STR指令操作; (3)使用多寄存器传送指令进行数据复制;(4)使用查表法实现程序跳转;(5)使用BX指令切换处理器状态;(6)微处理器工作模式切换; 三、预备知识 了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上;内存:1GB及以上; 实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2;集成开发环境:ARM Developer Suite (ADS) 1.2。 五、实验分析 1.安装的ADS1.2 IDE中包括两个软件组件。在ADS1.2

中建立 ARM Executable Image(ARM可执行映像)类型的工程,工程目标配置为 Debug;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为ARMUL仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名: AREA XTF,CODE,READONLY 声明32位ARM指令 R0arm嵌入式实验报告完整版) ADD R0,R1,R2 3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。 AREA XTF,CODE,READONLY ;声明代码段XTFENTRY ;标示程序入口CODE32 ;声明32位ARM 指令START LDR R0,=1 ;加载数据LDR R1,=2LDR R3,=ADDR_1;载符号地址 ADD R2,R0,R1;R2[R3] ;数据空间定义 AREA Data_1,DATA,ALIGN=2 ADDR_1 DCD 0 END ;结束 4.“使用多寄存器传送指令进行数据复制”汇编程序分析。 LDR R0,=SrcData ;

嵌入式实验3按键实验(中断方式)

河南机电高等专科学校《嵌入式系统开发》课程实验报告 系部:电子通信工程系 班级:电信1## 姓名: ###### 学号: 120######

实验三按键实验(中断方式) 一.实验简介 在实验一的基础上,使用按键控制流水灯。 二.实验目的 熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。 三.实验内容 实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。 下载代码到目标板,查看运行结果。 四.实验设备 硬件部分:PC计算机(宿主机)、STM32实验板。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1在实验一代码的基础上,编写中断初始化代码 2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序 3编写中断服务程序 4编译代码,下载到实验板 5.单步调试 6记录实验过程,撰写实验报告 六.实验结果及测试 中断方式的按键式实验,是通过配置外部中断寄存器和中断嵌套(NVIC)控制器来实现按键按下控制LED灯亮灭。通过按键中断打断主函数,执行LED1取反一次。 主函数初始化中断配置和LED配置,点亮LED1后一直等待中断,每中断一次,LED1取反一次。

int main(void) { LED_GPIO_Config(); LED1_ON; CLI(); SEI(); EXTI_PA0_Config(); while(1) { } } 中断嵌套控制寄存器的配置为中断嵌套分组1;抢占优先级0;响应优先级0 代码如下: void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } 外部中断按键的配置源码如下:配置PA0位中断线,并使能AFIO时钟void EXTI_PA0_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE); NVIC_Configuration(); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); }

嵌入式定时器实验

理工大学信息工程与自动化学院学生实验报告 (2013 —2014 学年第 2 学期) 一、实验目的 掌握定时器T0、T1的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。 二、实验原理 89C51单片机有五个中断源(89C52有六个),分别是外部中断请求0、外部中断请求1、定时器/计数器0溢出中断请求、定时器/计数器0溢出中断请求及串行口中断请求。每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器TCON和SCON中。当中断源请求中断时,相应标志分别由TCON和SCON的相应位来锁寄。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。在同一优先级别中,靠部的查询逻辑来确定响应顺序。不同的中断源有不同的中断矢量地址。

中断的控制用四个特殊功能寄存器IE、IP、TCON (用六位)和SCON(用二位),分别用于控制中断的类型、中断的开/关和各种中断源的优先级别。 中断程序由中断控制程序(主程序)和中断服务程序两部分组成:1)中断控制程序用于实现对中断的控制; 2)中断服务程序用于完成中断源所要求的中断处理的各种操作。 C51的中断函数必须通过interrupt m进行修饰。在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按MCS-51系统中断的处理方式自动把它安排在程序存储器中的相应位置。 三、实验容 在实验板上完成如下功能: ●用定时器T0的方式1,实现第一个发光二极管以200ms的间隔闪烁; ●用定时器T1的方式1,实现数码管前两位59s循环计时。 实验板数码管电路原理如图1所示。 计算初值公式 定时模式1 th0=(216-定时时间) / 256 tl0=(216-定时时间) % 256

嵌入式系统流水灯,按键,定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验1、流水灯实验 1.1实验要求 编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。 1.2原理分析 实验主要考察对STM32F10X系列单片机GPIO的输出操作。 参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出 ◇推挽式复用功能 ◇开漏式复用功能 根据实验要求,应该首先将GPIO配置为推挽输出模式。 由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。 1.3程序分析 软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。 GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟: RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); 然后配置GPIO输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度:

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。 初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。 实验程序流程图如下: 硬件方面,根据实验指南,将实验板做如下连接: 1.3实验结果

嵌入式-中断实验

实验五中断控制实验 (一)实验目的 了解中断的作用; 掌握嵌入式系统中断的处理流程; 掌握ARM中断编程。 (二)实验设备 计算机;ARM硬件仿真器;ARM开发板 (三)实验硬件设置 在做实验之前,先将开发板电源接好,将仿真器的USB连线与电脑相连,通电,然后按核心板的复位键。 (四)实验原理 1. 中断的基本概念 CPU与外设之间传输数据的控制方式通常有三种:查询方式、中断方式和DMA方式。DMA 方式将在后续实验中说明。查询方式的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了CPU的利用率。为了解决这个矛盾,通常采用中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器; 或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU再返回并继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。能够向CPU发出中断请求的设备或事件称为中断源。系统引入中断机制后,CPU与外设(甚至多个外设)处于“并行”工作状态,便于实现信息的实时处理和系统的故障处理。中断方式的原理示意图如下所示。 图5-7 中断处理示意图 1)中断响应 中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息。然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。 CPU响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。 2)中断服务子程序 CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。中断服务子程序的一般结构如下图所示。

嵌入式实验报告

《嵌入式系统导论》实验报告 学院: 学号: 姓名: 上海工程技术大学 电子电气工程学院

实验一GPIO(按键与LED)实验 一、实验要求 1 、掌握基于STM32F103微控制器得嵌入式系统、仿真器与开发用PC机之间得连接方法,能够搭建基于STM32F103微控制器得嵌入式系统交叉开发环境。 2、熟悉常用得嵌入式开发工具KEILMDK或IAR EW ARM得操作环境与基本功能(包括编辑、编译、链接、调试与下载等),学会创建、配置与管理STM32工程,掌握嵌入式程序得基本调试方法,学会使用逻辑分析仪窗口与外设窗口等信息窗口调试嵌入式程序。3、理解LED与按键得构件原理,学会设计它们与微控制器间得接口电路 4 、掌握STM32F103微控制器GPIO得工作原理,熟悉STM32得GPIO库函数 5 、学会使用STM32得GPIO库函数在KEIL MDK或IAR EW ARM下开发基于LED与按键得简单嵌入式应用程序 二、实验环境 1、硬件: ALIENTEK STM32F103嵌入式开发板 2 、软件: KEIL MDK或IAR EWARM 三、实验内容 1、流水灯实验一: 在KEIL MDK或IAR EWARM中建立STM32工程,并使用GPIO库函数与延时循环设计基于无限循环架构得嵌入式应用程序,使开发板上得红色LED以一定周期闪烁。 采用软件仿真得方式调试程序,通过“Logic Analyzer”,观察程序模拟运行时连接红色LED得引脚PA8上得输出波形。 采用硬件下载得方式调试程序,观察程序下载硬件运行时红色LED得闪烁情况。 2、按键控制LED实验: 在KEIL MDK或IAR EWARM 中建立STM32工程,并使用GPIO库函数设计基于无限循环架构得嵌入式应用程序,实现以下功能:当按键KEY0按下时,目标板上红色LED点亮;当按键KEY0释放时,目标板上红色LED熄灭。 采用软件仿真得方式调试程序,通过“Logic Analyzer”与“Peripherals→GPIO C”,观察程序模拟运行时连接红色LED得引脚PA8与连接按键KEY0得PC5上得输出波形。 采用硬件下载得方式调试程序,观察程序下载硬件运行时按键KEY0按下与释放时红色LED得点亮与熄灭情况。 四、硬件设计 1、发光二极管(红色LED)、按键(KEY0)与嵌入式微控制器(STM32F103)得接口电路

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

中北大学嵌入式系统实验报告

中北大学计算机与控制工程学院实验报告《嵌入式系统实验报告》 专业电气工程与智能控制 班级 14070541 学号 1407054103 姓名贾晨凌

实验一 ARM 处理器指令系统实验 一、实验目的 熟悉ARM指令系统,熟悉ARM SDT编辑编译连接,ARM Project Manager和ARM Debugger 的设置和使用 二、实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager和ARM Debugger。 三、实验内容 学习使用ARM Project Manager建立项目文件,编辑汇编文件,并加入项目。学习ARM编译器和汇编器的设置。通过编程熟悉ARM指令,包括跳转指令,数据处理指令,状态寄存器传送指令,load/store指令,中断异常产生指令。学习ARM调试起的使用方法,包括程序的导入,单步执行,断点设置等。 四、实验要点 工程文件的建立,在ARM Project Manager中点击File->New,选择Project,点击确定。 链接器的设定,需要设置代码和数据段的起始地址。 点击图标,选择不进行远程调试,即可打开调试器。 五、实验结果 熟悉ARM指令系统 实验二p1口实验 一、实验目的 熟悉 ARM SDT 软件开发方法和技能;

学习和巩固 ARM 指令集; 学习和巩固汇编语言程序设计 二、实验条件 Windows 平台的 ARM SDT 2.51 软件:ARM Project Manager 和 ARM Debugger; DebugServer.exe ; EFLAG-ARM-S3C44B0 实验箱 三、实验内容 目录 ARM251\EXAMPLES\ASM 下的汇编程序, 学习和调试代码,分析所得结果。 在调试器上仿真软件的执行。 在实验箱上,调试软件,并观察软件的执行结果 四、实验要点 在调试软件目录中启动 DebugServer.exe 调试器服务程序。 启动 SDT 调试软件 ARM Debugger。 五、实验结果

嵌入式系统实训报告-外部中断

《嵌入式系统技术》 实训报告 1、实验目的 z了解S3C2440A 外部中断的工作原理。 z掌握S3C2440A 外部中断的使用方法。 2、实验设备 z PC 机、Multi-ICE 仿真器、2440A 实验箱。 3、实验内容 z通过外部K1、K2、K3、K4、K5、K7 按键触发外部中断E INT1、EINT2、EINT3、EINT4、EINT5、EINT7 4、实验原理 4.1 ARM 的异常中断类型 在嵌入式系统中外部设备的功能实现主要是靠中断机制来实现的。中断功能可以解决CPU 内部运行速度远远快于外部总线速度而产生的等待延时问题。ARM 提供的FIQ 和IRQ 异常中断用于外部设备向C PU 请求中断服务,一般情况下都是采用I RQ 中断。 七种异常中断

中断过程框图 4.2 异常中断响应过程和返回过程 异常中断的响应过程: 1).保存处理器当前状态寄存器C PSR 的值到备份程序状态寄存器S PSR 中。 2).设置但前程序状态寄存器CPSR 的值,其中包括:设置CPSR 响应位的值,使处理器进入特定的处理器模式;按要求屏蔽中断,通常应该屏蔽I RQ 中断。在F IQ 中断时屏蔽F IQ 中断。 3).设置L r 寄存器。将相应中断模式的L r 寄存器的值设为异常中断的返回地址。 4).处理程序计数器PC,将PC 值设为相应的中断向量的地址,从而实现跳转以执行中断服务程序。 异常中断的返回 当处理器执行完以上流程之后,处理器已经从中断向量进入异常处理的状态。异常中断处理完毕之后,在异常中断程序的末端,处理器进入异常中断的返回状态,其流程如下: 1).恢复状态寄存器。将保存的备份程序状态寄存器SPSR 值赋给当前程序状态寄存器CPSR。 2).将返回地址赋值到程序计数器(PC)。这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。 需要注意的是:对于不同的异常中断,其返回地址的计算方法也是不同的,IRQ 和F IQ 异常中断产生时,程序计数器PC 已经更新,而SWI 中断和未定义指令中断时由当前指令自身产生的,程序计数器P C 尚未更新,所以要计算出下一条指令的地址来执行返回操作;指令预取指中指异常中断和数据访问中断要求,返回到出现异常的执行现场,重新执行操作。 S3C2440A 异常中断的响应-返回流程图:

嵌入式系统实验报告

嵌入式系统实验报告 学号: 姓名: 班级:13电子信息工程 指导老师: 苏州大学电子信息学院 2016年12月

实验一:一个灯的闪烁 1、实验要求 实现PF6-10端口所连接的任意一个LED灯点亮 2、电路原理图 图1 LED灯硬件连接图 3、软件分析 RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;;) { GPIOF->ODR = 0xfcff; /* PF8=0 --> 点亮D3 */ Delay(1000000); GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */ Delay(1000000); 4、实验现象 通过对GPIOF8的操作,可以使LED3闪烁 5、实验总结

这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有了初步了解。 实验二:流水灯 1、实验要求 实现PF6-10端口所连接的5个LED灯顺次亮灭 2、电路原理图 图1 流水灯硬件连接图 3、软件分析 int main(void) { RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;;) { GPIOF->ODR = 0xffbf; /* PF6=0 --> 点亮LED1 */ Delay(5000000); GPIOF->ODR = 0xff7f; /* PF7=0 --> 点亮LED2 */ Delay(5000000); GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮LED3 */

嵌入式实验一实验报告

1 / 5 实验报告 同组学生姓名:施兴棋________________________ 学号:3140103039___________________________ 同组学生姓名:______________________________ 学号:_____________________________________ 课程名称: 《嵌入式系统》 实验序号: 实验名称: 外部中断和GPIO 实验 摘要: 编写程序,实现以下功能:同时控制4个LED 循环显示和蜂鸣器信号输出,当中断来临,灯全灭,蜂鸣器关闭;再来一个中断,灯又循环显示,蜂鸣器响。 一、实验目的 (1)掌握EasyJTAG-H 仿真器的安装和应用; (2)掌握LPC2200专用工程模板的使用; (3)掌握ADS 集成开发环境应用; (4)掌握向量IRQ 中断的设置及应用; (5)掌握外部中断引脚功能设置及外部中断的工作模式设置; (6)掌握LPC2000系列ARM7微控制器的GPIO 控制; 二、实验内容 1)启动EasyJTAG-H 仿真器 注意:LPC2200无内部FALSH 2)分别编译程序清单1.1和程序清单1.2 3)编译连接工程,观察实验结果,在实验报告中描述。 4)例程通过后,根据实验要求在user 组中的main.c 中编写主程序代码。 5) 在Startup.s 文件的InitStack 子程序中,修改设置系统模式堆栈处的代码为“MSR CPSR_c ,#0x5f ”,即使能IRQ 中断。 6)选用DebugInExram 生成目标,然后编译链接工程。 7)将SmartARM2200教学实验开发平台上的JP2、JP4跳线短接,JP7断开。JP9设置为OUTSIDE ,JP10跳线设置为Bank0-RAM 、Bank1-FALSH 。 8)选择Project Debug ,启动AXD 进行JTAG 仿真调试。 9)在中断服务程序中设置断点,全速运行程序,使ENT3为低/高电平,即反复按下或释放KEY1键。 10)单步/全速运行程序,观察程序是否正确运行,蜂鸣器是否蜂鸣,LED 流水灯是否循环显示,两者是否同步,即同时开或同时灭。 专业:自动化1402 日期:2016.10.11 地点:教2-104 成绩:________________

嵌入式系统实验报告(优选.)

最新文件---------------- 仅供参考--------------------已改成-----------word文本 --------------------- 方便更改 赠人玫瑰,手留余香。 嵌入式系统实验报告 学号: 姓名: 班级:13电子信息工程 指导老师:

苏州大学电子信息学院 2016年12月 实验一:一个灯的闪烁 1、实验要求 实现PF6-10端口所连接的任意一个LED灯点亮 2、电路原理图 图1 LED灯硬件连接图 3、软件分析 RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;;) {

GPIOF->ODR = 0xfcff; /* PF8=0 --> 点亮D3 */ Delay(1000000); GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */ Delay(1000000); 4、实验现象 通过对GPIOF8的操作,可以使LED3闪烁 5、实验总结 这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有了初步了解。 实验二:流水灯 1、实验要求 实现PF6-10端口所连接的5个LED灯顺次亮灭 2、电路原理图

图1 流水灯硬件连接图3、软件分析 int main(void) { RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;;) { GPIOF->ODR = 0xffbf; /* PF6=0 --> 点亮LED1 */ Delay(5000000); GPIOF->ODR = 0xff7f; /* PF7=0 --> 点亮LED2 */ Delay(5000000); GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮LED3 */ Delay(5000000); GPIOF->ODR = 0xfdff; /* PF9=0 --> 点亮LED4 */ Delay(5000000); GPIOF->ODR = 0xfbff; /* PF10=0 --> 点亮LED5 */ } } 4、实验现象 LED1~LED5依次点亮,亮灭的时间间隔都为1S。 5、实验总结 本次实验对STM32开发板的GPIO端口进行进一步学习,通过程序可以实现流水灯的闪烁。 实验三:单级外部中断

基于LPC1768嵌入式系统设计实验报告

嵌入式实验报告 学院: 专业: 班级: 姓名: 学号: 指导老师:

实验一系统节拍定时器实验 【实验目的】 (1)掌握LPC1768芯片的使用 (2)在开发平台上开发第一个程序 (3)熟悉lpc1768的GPIO控制 【实验内容】 控制开发平台的蜂鸣器周期性(1秒)交替鸣叫。 【实验原理】 【原理图】 【实验步骤】 1使用Realview MDK创建一个新的工程,经过一系列配置后 2新建一个文件,点击File 菜单下的New。输入代码,点击保存 3 对工程进行配置完成以后,编译、链接、下载到开发板上 程序代码 #include "LPC17xx.h" /**************************************************************** ***************************************** 宏定义 ***************************************************************** ****************************************/ #define BEEP (1ul <<26) uint32_t GulSystick = 0; uint32_t GucDelay1S = 0; /****************************************************************

***************************************** ** Function name: myDelay ** Descriptions: 软件延时 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ***************************************************************** ****************************************/ //void myDelay (uint32_t ulTime) //{ // uint32_t i; //while (ulTime--) { // for (i = 0; i < 5000; i++); //} //} /**************************************************************** ***************************************** ** Function name: GPIOInit ** Descriptions: GPIO初始化 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ***************************************************************** ****************************************/ void GPIOInit( void ) { LPC_PINCON->PINSEL1 &= ~(0x3 << 20); /* 将P0.26初始化为GPIO功能 */ LPC_GPIO0->FIODIR |= BEEP; /* 将P0.26方向设置为输出 */ LPC_GPIO0->FIOSET |= BEEP; /* 将P0.26初始化输出高电平 */ } /**************************************************************** ***************************************** ** Function name: SysTick_Handler ** Descriptions: 系统节拍定时器中断服务函数 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ***************************************************************** ****************************************/ void SysTick_Handler(void) {

相关主题
文本预览
相关文档 最新文档