3_3.3(中断系统)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1中断系统第三章TMS320C54xDSP片内外设2一、中断的基本知识中断类型中断标志寄存器(IFR)和中断屏蔽寄存器(IMR)3二、CPU如何执行中断?对硬件中断的处理INTMIMR对软件中断的处理(三条指令)IFRINTRK(INTM=1)TRAPK(对INTM不作要求)RESET(INTM=1)硬件复位和软件复位有何不同?4三、重新映射中断向量地址(三个问题)表7-9中中断号与地址的关系?中断向量地址如何求得?为什么硬件复位后中断向量表的起始地址是FF80?5中断系统是DSP应用系统实现实时操作和多任务多进程操作的关键部分。’C54x的中断系统根据芯片型号的不同,提供了24~30个硬件及软件中断源,分为11~17个中断优先级,可实现多层任务嵌套。本节从应用的角度介绍’C54x中断系统的基本概念和工作过程。6(一)中断系统概述中断可以由硬件触发或者软件触发,中断信号使TMS320C54x系列的DSP暂停正在执行的程序,并进入中断服务程序(ISP)。1.中断分类{可屏蔽中断不可屏蔽中断软件中断硬件中断{72.处理中断的步骤TMS320C54xDSP处理中断分以下3个步骤:(1)接收中断请求通过软件(程序代码)或硬件(引脚或片内外设)请求挂起主程序。如果中断源正在请求一个可屏蔽中断,则当中断被接收到时中断标志寄存器(IFR)的相应位被置1。(2)应答中断TMS320C54xDSP必须应答中断请求。如果中断是可屏蔽的,则依定义条件的满足与否决定DSP如何应答中断。如果是非屏蔽硬件中断和软件中断,中断应答是立即的。(3)执行中断服务程序一旦中断被应答,执行中断向量地址所指向的分支转移指令,并执行中断服务程序。8(二)中断寄存器1.中断标志寄存器IFR中断标志寄存器IFR是一个存储器映像寄存器,当一个中断出现时,IFR中的相应的中断标志位置1,直到CPU识别该中断为止。’C54x中断系统设置两个中断寄存器:中断标志寄存器IFR和中断屏蔽寄存器IMR。图1中断标志寄存器IFR9中断标志寄存器IFR各位的功能位名称功能位名称功能15~14保留保留位,总是06DMAC0DMA通道0中断标志13DMAC5DMA通道5中断标志5BXINT0缓冲串口发送中断0标志12DMAC4DMA通道4中断标志4BRINT0缓冲串口接收中断0标志11BXINT1缓冲串口发送中断1标志3TINT0定时器中断0标志10BRINT1缓冲串口接收中断1标志2INT2外部中断2标志9HPINTHPI中断标志1INT1外部中断1标志8INT3外部中断3标志0INT0外部中断0标志7TINT1定时器中断1标志10中断屏蔽寄存器是一个存储器映像寄存器,主要用于控制中断源的屏蔽和开放。当状态寄存器ST1中的INTM位为0时,全局中断允许。IMR中的某位置1时,开放相应的中断。由于RS和NMI都不包含在IMR中,因此IMR对这两个中断不能进行屏蔽。图2中断屏蔽寄存器IMR11中断屏蔽寄存器IMR各位的功能位名称功能位名称功能15~14保留保留位,总是06DMAC0DMA通道0中断屏蔽位13DMAC5DMA通道5中断屏蔽位5BXINT0缓冲串口发送中断0屏蔽位12DMAC4DMA通道4中断屏蔽位4BRINT0缓冲串口接收中断0屏蔽位11BXINT1缓冲串口发送中断1屏蔽位3TINT0定时器中断0屏蔽位10BRINT1缓冲串口接收中断1屏蔽位2INT2外部中断2屏蔽位9HPINTHPI中断屏蔽位1INT1外部中断1屏蔽位8INT3外部中断3屏蔽位0INT0外部中断0屏蔽位7TINT1定时器中断1屏蔽位12中断控制主要是屏蔽某些中断,避免其他中断对当前运行程序的干扰,以及防止同级中断之间的响应竞争。1.接收中断请求一个中断可由硬件器件或软件指令提出请求。当产生一个中断时,IFR寄存器中相应的中断标志位被置1。不管中断是否被处理器应答,该标志位都会置1。当相应的中断响应后,该标志位自动被清除。(三)中断控制13外部硬件中断由外部中断口的信号发出请求,而内部硬件中断由片内外设的信号发出中断请求。(1)硬件中断请求’C5402硬件中断的请求信号:外部中断:INT3~INT0引脚;非屏蔽中断:RS和NMI引脚;片内中断:BRINT0、BXINT0、BRINT1和BXINT1(串口中断)TINT0、TINT1(定时器中断);DMAC4、DMAC5(DMA中断);HPINT(HPI中断)。14软件中断是由程序指令产生的中断请求,主要有3条指令:(2)软件中断请求INTR指令:允许执行任何的可屏蔽中断,包括用户定义的中断(从SINT0到SINT30);TRAP指令:与INTR指令相同,但不影响状态寄存器ST1的中断方式(INTM)位;RESET指令:可在程序的任何时候产生,使处理器返回一个预定状态。15对于软件中断和非屏蔽中断,CPU将立即响应,进入相应中断服务程序。对于硬件可屏蔽中断,满足以下3种条件CPU才能响应中断。2.中断响应①当前中断优先级最高。②INTM位清0。③IMR屏蔽位为1。满足上述条件后,CPU响应中断,终止当前正进行的操作,指令计数器PC自动转向相应的中断向量地址,取出中断服务程序地址,并发出硬件中断响应信号IACK,而清除相应的中断标志位。16CPU响应中断后,将进行以下操作:3.中断服务程序①保护现场,将程序计数器PC值压入堆栈;②将中断向量的地址加载到PC;③从中断向量所指定的地址开始取指;④执行分支转移,进入中断服务程序;⑤执行中断服务程序直到出现返回指令;⑥从堆栈中弹出返回地址,加载到PC中;⑦继续执行主程序。174.保存中断上下文当执行中断服务程序时,有些寄存器必须保存在堆栈中。当程序从ISR返回时,用户软件代码必须恢复这些寄存器的上下文。使用堆栈操作指令可以将这些寄存器传送到堆栈中,或者从堆栈中取出。PSHM指令:将MMR寄存器中的内容传送到堆栈中;POPM指令:从堆栈中读出的数据传送到MMR寄存器中;PSHD指令:将数据存储器中的数据传送到堆栈;POPD指令:从堆栈中读出的数据传送到数据存储器中。当保存和恢复上下文时,应考虑如下几点:①当使用堆栈保存上下文时,必须按相反的方向执行恢复;②当恢复ST1寄存器的BRAF位之前,应该恢复BRC位。如果没有按照这个顺序,BRC=0,则BRAF位将被清除。185.中断操作流程(1)可屏蔽中断操作过程:①设置IFR寄存器的相应标志位;②测试中断响应条件;③当中断响应后,清除相应的标志位,屏蔽其他可屏蔽中断;PC值保存到堆栈中;④分支转移执行中断服务程序;⑤中断返回,将返回地址从堆栈中弹出给PC;⑥CPU继续执行主程序。19(2)非屏蔽中断操作过程:①CPU立刻响应该中断,产生中断响应信号;②如果中断是由RS、NMI或INTR指令请求的,则INTM位被置1;③若INTR指令已经请求了一个可屏蔽中断,则相应的标志位被清零;PC值保存到堆栈中;④分支转移执行中断服务程序;⑤中断返回,将返回地址从堆栈中弹出给PC;⑥CPU继续执行主程序。20接收中断请求中断可屏蔽?INTM=0?IMR屏蔽位为1中断被响应IACK中断信号产生中断可屏蔽?压栈PC指针运行中断服务程序返回指令将PC指针还原继续主程序INTM置为1否否否否是是是是中断操作流程图:

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功