f2812课件第11章三级中断系统_第1页
f2812课件第11章三级中断系统_第2页
f2812课件第11章三级中断系统_第3页
f2812课件第11章三级中断系统_第4页
f2812课件第11章三级中断系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、第11章 中断管理(Interrupt)南京仁欧科技有限公司专业的DSP开发工具和方案供应商,可定制承接项目欢迎访问: 联系方式11.1 什么是中断在任何一款事件驱动型的CPU里面都应该会有中断系统,因为中断就是为响应某种事件而存在的。中断的灵活应用不仅能够实现想要实现的功能,而且合理的中断安排可以提高事件执行的效率,因此中断在DSP应用中的地位是非常重要的。 中断(Interrupt)是硬件和软件驱动事件,它使得CPU暂停当前的主程序,并转而去执行一个中断服务子程序。 中断的生活实例F2812的三级中断CPU中断PIE中断外设中断11.2 CPU中断X2812的中断

2、主要由两种方式触发。一种是通过在软件中写指令,例如INTR、OR IFR或者TRAP指令。另一种是硬件方式触发,例如来自于片内外设,或者外围设备的中断信号,表示某个事件已经发生。 可屏蔽中断和不可屏蔽中断可屏蔽中断就是这些中断可以用软件加以屏蔽或者解除屏蔽。X2812片内外设所产生的中断都是可屏蔽中断,每一个中断都可以通过相应寄存器的中断使能位来禁止或者使能该中断。 不可屏蔽中断就是这些中断是不可以被屏蔽的,一旦中断申请信号发出,CPU必须无条件的立即去响应该中断并执行相应的中断服务子程序。X281X的不可屏蔽中断主要包括软件中断(INTR指令和TRAP指令等)、硬件中断、非法指令陷阱以及硬件

3、复位中断。 CPU处理中断的步骤11.2.2 CPU中断向量和优先级前面讲解的是单个中断请求的处理过程,那要是几个中断同时向CPU发出中断请求,CPU该如何处理呢? 优先级的简单例子假如有一个医生但是有两个病人需要急诊,一个出了车祸,性命攸关,而另一个只是普通的感冒,这时候医生会先诊治哪个病人呢? 22位的CPU中断向量一共可以支持32个CPU中断,其中每一个中断都是一个32位的中断向量 。中断向量绝对地址优先级说明VMAP=0VMAP=1RESET00 0000h3F FFC0h1(最高)复位中断INT100 0002h3F FFC2h5可屏蔽中断1INT200 0004h3F FFC4h6

4、可屏蔽中断2INT300 0006h3F FFC6h7可屏蔽中断3INT400 0008h3F FFC8h8可屏蔽中断4INT500 000Ah3F FFCAh9可屏蔽中断5INT600 000Ch3F FFCCh10可屏蔽中断6INT700 000Eh3F FFCEh11可屏蔽中断7INT800 0010h3F FFD0h12可屏蔽中断8INT900 0012h3F FFD2h13可屏蔽中断9INT1000 0014h3F FFD4h14可屏蔽中断10INT1100 0016h3F FFD6h15可屏蔽中断11INT1200 0018h3F FFD8h16可屏蔽中断12INT1300 001

5、Ah3F FFDAh17可屏蔽中断13INT1400 001Ch3F FFDCh18可屏蔽中断14DLOGINT00 001Eh3F FFDEh19(最低)可屏蔽数据标志中断RTOSINT00 0020h3F FFE0h4可屏蔽实时操作系统中断Reserved00 0022h3F FFE2h2保留NMI00 0024h3F FFE4h3不可屏蔽硬件中断ILLEGAL00 0026h3F FFE6h非法指令捕获IER寄存器IFR寄存器可屏蔽中断的响应过程多个中断申请时CPU响应过程中断A的优先级高于中断B的优先级中断A和中断B均已使能全局中断INTM也已经使能中断A和中断B同时提出申请,CPU如

6、何处理?如果CPU在执行中断A的服务子程序时,中断A的标志位又被置位了,那么CPU接下来会如何处理?11.3 PIE中断 2812的中断源PIE的生活实例好比一家大公司,每天会有很多员工向老总提交文件,请求老总处理。老总通常事务繁忙,他一个人没有能力同时去处理所有的事情,那怎么办呢? X281X的CPU为了能够及时有效的处理好各个外设的中断请求,特别设计了一个“秘书”专门处理外设中断的扩展模块(the Peripheral Interrupt Expansion Block),简称外设中断控制器PIE,它能够对各种中断请求源(来自于外设或者其他外部引脚的请求)做出判断和相应的决策。 外设中断在

7、PIE中的分布PIE一共可以支持96个不同的中断,并把这些中断分成了12个组,每个组有8个中断,而且每个组都被反馈到CPU内核的这12条中断线中的某一条上。平时能够用到的所有的外设中断都被归入了这96个中断中,被分布在不同的组里。 INTx.8INTx.7INTx.6INTx.5INTx.4INTx.3INTx.2INTx.1INT1WAKEINTTINT0ADCINTXINT2XINT1PDPINTBPDPINTAINT2T1OFINTT1UFINTT1CINTT1PINTCMP3INTCMP2INTCMP1INTINT3CAPINT3CAPINT2CAPINT1T2OFINTT2UFINT

8、T2CINTT2PINTINT4T3OFINTT3UFINTT3CINTT3PINTCMP6INTCMP5INTCMP4INTINT5CAPINT6CAPINT5CAPINT4T4OFINTT4UFINTT4CINTT4PINTINT6MXINTMRINTSPITXINTASPIRXINTAINT7INT8INT9ECA1INTECAN0INTSCITXINTBSCIRXINTBSCITXINTASCIRXINTAINT10INT11INT1211.3.2 PIE中断寄存器PIE中断使能寄存器(PIEIERx)PIE标志寄存器(PIEIFRx)PIE应答寄存器(PIEACKx)X=1,2,3.

9、12问题:CPU定时器0周期中断TINT0位于PIE中断寄存器的什么位置?PIE使能寄存器PIEIERxPIE标志寄存器PIEIFRxPIE中断应答寄存器PIEACKx三级中断系统外设级以CPU定时器T0的周期中断为例。TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMER0TCR的第14位TIE=1?N向PIE发出中断请求Y以CPU定时器T0的周期中断为例。TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMER0TCR的第14位TIE=1?N向PIE发出中断请求YTIMH:TIM计数到0TIM

10、H:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMER0TCR的第14位TIE=1?N向PIE发出中断请求Y以CPU定时器T0的周期中断为例。TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMER0TCR的第14位TIE=1?N向PIE发出中断请求Y外设级手动操作的内容外设中断的使能,需要将与该中断相关的外设寄存器中的中断使能位置1;外设中断的屏蔽,需要将与该中断相关的外设寄存器中的中断使能位置0;外设中断标志位的清除,需要将与该中断相关的外设寄存器中的中断标志位置1。清除CPU定时器0中断标志位TIF的语句如下: CpuT

11、imer0Regs.TCR.bit.TIF=1; /清除定时器中断标志位PIE级以CPU定时器T0的周期中断为例。TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位以CPU定时器T0的周期中断为例。TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位向CPU发出INT1中断请求以CPU定时器T0的周期中断为例。TIMH:TIM计数到0向PIE提出中断请求PIEIFR1.7被置位NPIEIER1.7=1?PIEIER1

12、.7=1?PIEACK.1=1?NYTIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位TIMH:TIM计数到0TIMH:TIM计数到0TIMER0TCR寄存器的第15位TIF被置位向CPU发出INT1中断请求以CPU定时器T0的周期中断为例。TIMH:TIM计数到0外设向PIE提出中断请求PIEIFR1.7被置位NPIEIER1.7=1?PIEIER1.7=1?PIEACK.1=1?YPIE级手动操作的内容PIE中断的使能。需要使能某个外设中断,就得将其相应

13、组的使能寄存器PIEIERx的相应位进行置位;PIE中断的屏蔽。这是和使能相反的操作;PIE应答寄存器PIEACK相关位的清除,以使得CPU能够响应同组内的其他中断。清除PIEACK中与T0INT相关的应答位的语句如下所示:PieCtrl.PIEACK.bit.ACK1=1; /响应PIE组1内的其他中断。CPU级PIE向CPU提出INT1中断请求TIMER0TCR寄存器的第15位TIF被置位TIMER0TCR寄存器的第15位TIF被置位TIMER0TCR寄存器的第15位TIF被置位CPU响应定时器T0周期中断以CPU定时器T0的周期中断为例。IFR.1被置位NPIEIER1.7=1?IER.

14、1=1?INTM=0?YN2812的中断过程11.5 成功实现中断的必要步骤第1步 外设初始化void InitCpuTimers(void)CpuTimer0Regs.TCR.bit.TIE=1; /使能CPU定时器0的周期中断 第2步 主函数中的处理void main(void).InitCpuTimers(); /初始化CPU定时器0 DINT; /禁止和清除所有CPU中断 IER=0 x0000; IFR=0 x0000; InitPieCtrl(); /初始化中断向量 InitPieVectTable(); /初始化中断向量表 PieCtrl.PIEIER1.bit.INTx7 =1;

温馨提示

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

评论

0/150

提交评论