实验三:中断实验.doc_第1页
实验三:中断实验.doc_第2页
实验三:中断实验.doc_第3页
实验三:中断实验.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三 向量中断与PLL一、实验目的1掌握ARM 的向量中断与非向量中断工作原理,编程实现ARM 的向量IRQ。2掌握LPC2103中断相关的寄存器配置方法。3掌握片内PLL的使用方法。二、实验仪器设备PC机 keil软件 ARM2103实验开发板 J-LINK仿真调试器三、实验原理1向量中断 LPC2100系列ARM7微控制器的中断管理是由向量中断控制器VIC操作的。向量中断控制器具有32个中断请求输人(32个中断通道,但LPC2103只使用了19个通道号),可将它们设置为FIQ、向量IRQ和非向量IRQ,通过编程不同外设的向量IRQ中断优先级,可以实现动态分配调整。FIQ中断优先级最高,向量IRQ具有中等优先级,非向量IRQ的优先级最低。快速中断请求(FIQ)具有最高优先级。如果分配给FIQ 的请求多于1 个,VIC 将结合中断请求向ARM 处理器产生FIQ 信号。当只有一个被分配为FIQ 时可实现最短的FIQ 等待时间,因为这时FIQ 服务程序不必再转移到中断服务程序中,而是直接从中断向量单元执行。但如果分配给FIQ 级的中断多于1 个,FIQ 服务程序从VIC 中读出一个字以识别产生中断请求的FIQ 中断源是哪一个。向量IRQ 具有中等优先级。该级别可分配16 个中断请求。任意中断请求中都可分配到16 个向量IRQ slot 之一,其中slot0 具有最高优先级,而slot15 则为最低优先级。非向量IRQ 的优先级最低。VIC 结合所有向量和非向量IRQ 向ARM 处理器产生IRQ 信号。通过读取VIC 寄存器并跳转到寄存器指向的地址来启动执行IRQ 服务程序。如果有任意一个向量IRQ 发出请求, VIC 则提供请求IRQ 服务程序的最高优先级的地址,否则提供默认程序的地址,该默认程序由所有非向量IRQ 共用。默认程序可读取任何VIC 寄存器以确定哪个IRQ 被激活。相关的寄存器应用解释如下:检查中断状态或中断通道VICIRQStatus IRQ状态标志,置1的位表示对应的通道号中断有效(此通道设置为IRQ,并已使能)。只读。VICFIQStatus FIQ状态标志,置1的位表示对应的通道号中断有效(此通道设置为FIQ,并已使能)。只读。VICRawIntr 所有中断的状态,32个通道的中断请求软件中断状态(不管是否使能)。只读。中断通道IRQ或FIQ选择VICIntSelect 中断选择即选择IRQ或FIQ中断,置1时表示对应通道设置为FIQ,否则为IRQ。读写。中断使能及软件中断VICIntEnable 中断使能,置1时表示对应通道使能,否则为禁止。读写。VICIntEnclr 中断使能清零,置1时清除对应通道使能标志。只写。VICSoftInt 软件中断设置,置1时表示对应通道产生中断,只能通过VICSoftClear清除软件中断标志。读写。VICSoftClear 软件中断清零,清除相应通道的软件中断标志。只写。IRQ中断向量VICVectAddr 向量中断地址,当发生向量IRQ时,此寄存器是最高优先线IRQ通道的向量地址值。读写。IRQ向量原地址VICDefVectAddr 非向量中断的向量地址,当发生非向量中断时,即将此寄存器值复制到VICVectAddr中。读写。VICVectAddr0l 5优先级015向量中断的向量地址,当有对应优先级向量IRQ中断时,将会把保存的值复制到VICVectAddr中。读写。向量IRQ中断优先级设置VICVectCntl015 向量控制寄存器015,即向量优先级寄存器。可以把各个IRQ中断通道分配到不同的向量控制寄存器中,使其成为向量中断,并具有一定的优先级。读写。设置向量中断,即是把中断通道分配到向量IRQ中断优先级寄存器中,当然对应通道必须设置为IRQ中断类型,而不能为FIQ中断类型。在VIC中,FIQ无中断优先级,也无向量地址,一般只分配一个通道为FIQ中断。VICVectCntl015寄存器的d5位是控制是否使能此优先级的向量功能,若复位为0,则关闭其向量功能。此向量IRQ变为非向量IRQ。杂项CProtection 保护使能,若最低位置为l,则只允许在特权模式下访问VIC寄存器。VIC基本操作方法如下:设置IRQFIQ中断,若是IRQ中断,则可以设置为向量中断并分配中断优先级,否则为非向量IRQ。然后可以设置中断允许,以及向量中断对应地址或非向量中断默认地址。当有中断后,若是IRQ中断,则可以读取向量地址寄存器,然后跳转到相应代码。当要退出中断时,对向量地址寄存器写0,通知VIC中断结束。当发生中断时,处理器将会切换处理器模式,同时相关的寄存器也将会映射。LPC2103具有3个外部中断输入,这3个外部中断属电平中断方式,可用来唤醒掉电的微控制器。LPC211x、LPC212x、LPC2194则具有4个外部中断,可以通过EXTMODE寄存器设置为电平触发中断或边沿触发中断方式,可用来唤醒掉电的微控制器。EXINT寄存器为中断标志寄存器,低3位与外部中断引脚EINT2、EINT1、EINT0对应,为1时表示外部中断有效。可以通过软件向其写入清零标志位。外部中断将会连接到VIC,使用向量中断控制器进行管理。EXTWAKE寄存器外部中断唤醒掉电(微控制器掉电)的允许寄存器,为1时允许其唤醒掉电,否则不允许该中断唤醒CPU。在没有时钟源的情况下,外部中断EINT0、EINT1、EINT2仍可以工作,即它们能唤醒掉电的微控制器。四、实验电路图 3-3 中断处理使用外部中断0实现点亮熄灭控制。按键KEY1与EINT0引脚连接,当按下按键时,即可触发外部中断。从LPC2103的数据手册上可以看到,外部中断0占用的VIC通道号为14。使用中断向量控制器的向量IRQ功能,实现EINT03中断处理。首先把EINT0设置为下降沿触发方式,然后设置为向量IRQ中断,分配优先级并使能向量,最后设置相关向量地址寄存器及中断使能。当有IRQ中断时,VIC会将中断向量地址放入向量地址寄存器VICVectAddr使中断处理能够快速地找到相应的向量,进行IRQ处理。在IRQ处理过程中,IRQ中断默认是被禁止的,如有需要,也可设置IRQ中断允许。处理完毕后,写向量地址寄存器为0,通知VIC中断处理结束。五、实验内容1.外部中断及向量中断处理控制2.编程实现通过外部中断及向量中断处理控制蜂鸣器。六、操作步骤(1)启动keil,新建工程。(2)新建C源文件,添加到工程,添加头文件LPC21xx.h及config.h 。(3)配置工程选项。(4)编译链接工程。(5)调试,运行,观察实验结果。七、实验要求1.总结分析实验过程中遇到的问题2.画出中断实验中断函数设置流程图八、参考程序1 EINT0及IRQ/#include #include #includeLPC21xx.h#include config.hvoid delay_ms(int dly) unsigned int i; for(;dly0;dly-) for(i=0;i5000;i+); void _irq IRQ_Ex0(void)/IRQ_Count+; /* 进入中断加1 */ if(IO0PIN&LED1CON)=0) IO0SET = LED1CON; else IO0CLR = LED1CON; while(IO0PIN & (KEY1) = 0) ; /* 等待按键松开 */EXTINT = ; /* 清中断标志 */VICVectAddr = ; /* 向量中断结束 */void Init_Ex0(void) /*GPIO、外部中断初始化*/ PINSEL1 = (PINSEL1 & 0xFFFFFFFC) | 0x01; /* 设置P0.16为外部中断0管脚 */ EXTMODE = ; /* 跟下条语句一起决定低电平触发 */ EXTPOLAR = 0x00; /*向量中断控制初始化*/ VICIntSelect = 0 14; /* 选择EINT0为IRQ中断 */ VICVectCntl0 = 0x20 | 14; /* 将外部中断0分配给向量中断0 */ VICVectAddr0 = (unsigned int)IRQ_Ex0; /* 设置中断服务程序地址 */ VICIntEnable = 1 ; /* 使能EINT0中断 */ EXTINT = ; /* 清除EINT0中断标志 */void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论