LPC-2124中断概述

发布者:BlissfulWhisper最新更新时间:2018-11-29 来源: eefocus关键字:LPC-2124  中断概述 手机看文章 扫描二维码
随时随地手机看文章

(一)概述


ARM7TDMI内核具有两种中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有许多中断源,最多可以有32个中断输入请求。


向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。



(二)中断源列表





(三)允许中断源产生中断

    

芯片内部许多部件都可以作为中断源,但并不是每个中断源都需要在中断情况下进行操作,也可以通过其它方法来处理各种状态。


    比如通过串口发送一段数据,可以选择在一批发送结束后产生中断,然后在中断服务程序中发送下一批数据。也可以通过查询发送标志位来决定什么时候发送下一批数据。允许中断源产生中断由寄存器VICIntEnable和VICIntEnClr控制,前者使能中断,后者禁止中断。


1中断使能寄存器(VICIntEnable)


2中断禁止寄存器(VICIntEnClr)


(四)选择产生中断的类型


ARM7TDMI内核具有FIQ和IRQ两种中断输入,所有中断源产生的中断都可以选择产生其中一种中断。这通过中断选择寄存器完成。



中断输入请求可以在VIC中被设置为以下三类:


①FIQ中断:具有最高优先级;


②向量IRQ中断:具有中等优先级;


③非向量IRQ中断:具有最低优先级;


(五)向量IRQ中断


VIC最多支持16个向量IRQ中断,这些中断被分为16个优先级,并且为每个优先级指定一个服务程序入口地址。在发生向量IRQ中断后,相应优先级的服务程序入口地址被装入向量地址寄存器VICVectAddr中,通过一条ARM指令即可跳转到相应的服务程序入口处,所以向量IRQ中断具有较快的中断响应。


1向量中断相关寄存器


VICVectCntl0~15和VICVectAddr0~15两类寄存器与向量IRQ中断设置有关,前者为中断源分配向量IRQ中断的优先级,后者为该中断优先级设置服务程序入口地址。寄存器名称最后的数字同时也代表该寄存器控制的向量IRQ中断的优先级,数值越小优先级越高。


注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。


向量控制寄存器(VICVectCntl0~15)

向量地址寄存器(VICVectAddr0~15)


(六)非向量中断


任何中断源都可以设置为非向量IRQ中断。它与向量IRQ中断的区别在于前者不能为每个中断源设置服务程序地址,而是所有的中断都共用一个相同的服务程序入口地址。


当有多个中断源被设置为非向量IRQ中断时,需要在用户程序中识别中断源,并分别作出处理。所以非向量IRQ中断响应延时相对较长。




1非向量IRQ中断相关寄存器


在发生向量IRQ中断后,VIC能将对应中断的服务程序地址存入VICVectAddr寄存器中。如果为非向量中断,将把VICDefVectAddr寄存器的值存入该寄存器。在异常向量


表的IRQ异常入口处放置一条指令,将VICVectAddr寄存器的内容装入程序计数器(PC),就可以跳转到当前中断的服务函数。 这样的设计可以减小中断响应延时


2向量地址寄存器(VICVectAddr)


(七)中断状态寄存器


如果使用了多个非向量IRQ中断或多个FIQ中断,那么在发生中断后要在程序中查找中断源。通过IRQ状态寄存器和FIQ状态寄存器可以了解到这些中断源的中断请求状态。



任何在VIC中使能的中断都会把中断请求反映在"所有中断状态寄存器(VICRawIntr)"中。


1 所有中断状态寄存器(VICRawIntr)


2 FIQ状态寄存器(VICFIQStatus)

3 IRQ状态寄存器(VICIRQStatus)


(八)软件中断寄存器


在一些特殊场合或者调试时,可能需要使用软件强制产生某个中断请求


1软件中断寄存器(VICSoftInt)


2软件中断清零寄存器(VICSoftIntClear)


(九)保护使能寄存器


在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。



(十)IRQ中断的设计实例


设置外部中断0产生向量IRQ中断后执行中断服务程序“IRQ_Eint0( )”。


步骤:


1.设置引脚连接模块,将P0.X设置为外部中断功能;


2.设置所有中断为IRQ中断;


3.将外部中断0(在中断源列表中序号X)设置到优先级0中,并使能IRQ中断;


4.将外部中断0的中断服务程序写入对应优先级的地址寄存器中;


5. 使能外部中断0;


(十一)IRQ中断的发生过程


IRQ中断的发生过程


1.正在执行用户程序;


2.外部中断0发生中断;


3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;


4.程序跳转至异常向量表中IRQ入口0x0018处;


5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;


6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码


关键字:LPC-2124  中断概述 引用地址:LPC-2124中断概述

上一篇:Cortex-M3 (NXP LPC1788)之外部中断操作
下一篇:LPC2000 启动代码Start.s文件简要分析

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved