版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中断系统与应用1 PIE中断控制概述2 中断向量表映射 3 PIE中断向量表4 寄存器5 中断应用举例28x器件有许多外设,每个外设都可以产生一个或多个中断请求,从而去响应多个外设级上的事件。在CPU级上,CPU没有足够的能力去处理所有外设的中断请求;需要一个集中的外设中断扩展模块(PIE)Peripheral Interrupt Expansion (PIE) block;外设中断扩展模块把许多中断源多路复用成一个较小的中断输入集。PIE模块支持96个不同的中断,这些中断分成12个组,每个组有8个中断;每个组都被反馈到CPU内核的12条中断线( INT1-INT12 )的其中一条上。1 PI
2、E中断控制概述 F281共支持17个CPU级中断,包括一个NMI和16个可屏蔽中断(INT1INT14,RTOSINT和DLOGINT)外设中断扩展模块(PIE)中多个中断源复用1个中断信号。PIE支持多达96个中断源,其中8个中断源为一组,复用一个中断信号,总共有12个中断信号(INT1INT12)。PIE 的中断优先级由高到低分别是INT1INT12,组内8个优先级由高到低的次序依次是INTx.1INTx.8。PIE中断控制框图1100111外设级一个中断产生事件出现在某个外设中和该事件相关的中断标志位,会在这个相应的外设寄存器中被置为1。如果使能该中断,且中断标志仍然置位,那么就会向PI
3、E发出一个中断请求。外设寄存器中的中断标志手工清除。1 PIE中断控制概述2. PIE级PIE模块将8个外设或外部中断分为1组,每组复用1个CPU中断。这些中断被分为12个组:PIE组1 PIE组12,每个组中的中断被多路汇集进入1个CPU中断。例如,PIE组1被多路汇集进入CPU中断INT 1,而PIE组12被多路汇集进入CPU中断INT12。1 PIE中断控制概述对于多路复用的中断源,PIE块中的每个中断组都有一个相关标志位PIEIFRx.y和使能位PIEIERx.y。每个中断组(1NT1INT12)都有一个应答位PIEACKx。1 PIE中断控制概述3. CPU级一旦某个中断请求被送往C
4、PU,CPU级中与INTx相关的中断标志(IFR )位就被置位;标志位被锁存在IFR后,CPU不会马上去执行相应的中断,而是等待CPU使能IER寄存器,并对全局中断屏蔽位INTM进行使能。1 PIE中断控制概述PIE中断流程图IERxINTMPIEIFRx.yPIEIERx.y在C28X系列DSP中,中断矢量表可以映射到5个不同的区间:M1 SARAM, M0 SARAM, BROM, XINTF Zone 7,PIE矢量表。在F2812中,只有PIE矢量表可以使用。使能PIE矢量表,令ENPIE=1;寄存器PIECTRL的位0。复位时, ENPIE=0,PIE被禁止。PIE向量(vector
5、)表用来存储系统的各个中断服务子程序ISR的地址。2 中断向量表的映射2 中断向量表的映射 PIEVECT(15:1)指明中断矢量表中的中断矢量地址 ENPIE1时所有中断矢量取自PIE中断矢量表 ENPIE0时取自Boot ROM中的CPU矢量表或外部接口Zone 7 PIE中断向量表映射地址2 中断向量表映射F281的中断源中断源:45个PIE中断源16个CPU中断一个NMI中断3个外部中断源从外设到CPU的多通道中断请求流程 3 PIE中断向量表 每个中断源都有相应的中断向量存放在RAM中,构成整个系统的中断向量表存放中断服务程序的地址。 中断向量表由25616位的SRAM构成,每个中断
6、向量占用2个16位的地址空间。 3 PIE中断向量表F2812 PIE 中断INTx.8INTx.7INTx.6INTx.5INTx.4INTx.3INTx.2INTx.1INT1WAKEINTTINT0ADCINTXINT2XINT1PDPINTBPDPINTAINT2T1OFINTT1UFINTT1CINTT1PINTCMP3INTCMP2INTCMP1INTINT3CAPINT3CAPINT2CAPINT1T2OFINTT2UFINTT2CINTT2PINTINT4T3OFINTT3UFINTT3CINTT3PINTCMP6INTCMP5INTCMP4INTINT5CAPINT6CAPI
7、NT5CAPINT4T4OFINTT4UFINTT4CINTT4PINTINT6MXINTMRINTSPITXINTASPIRXINTAINT7INT8INT9SCITXINTBSCIRXINTBSCITXINTASCIRXINTAINT10INT11INT12ECAN0INTECAN1INT共45个中断源PIECTRL PIE控制寄存器PIEACK PIE应答寄存器PIEIERx (x=112) PIE中断使能寄存器PIEIFRx (x=112) PIE中断标志寄存器4 寄存器PIE控制寄存器PIECTRLD15-D1 ,PIEVECT, 表示从矢量表中取出的矢量地址。D0,ENPIE,使能
8、从PIE取中断向量。为1时,使能。从这个地址读取中断服务函数的地址D11-D0 ,PIEACK,写入1到对应的中断位可以清除该位,清除后当该组的中断申请到来时,允许PIE向CPU申请中断。D7D0 ,INTx.8 INTx.1 , 表示中断是否激活。当一个中断激活时,相应位置1。 当有中断产生,相应位置1;写0清除该位。一般不要软件写0。当DSP响应该中断后,硬件将标志位清零。 读寄存器可判断是否有待响应的中断。D7D0 ,INTx.8 INTx.1 , 表示中断使能。PIE中断使能寄存器PIEIERx, x=112置1使能相应的外设中断;置0屏蔽该中断源。 D15: RTOSINT ,实时操
9、作系统中断标志位。 D14: DLOGINT flag, 数据记录中断标志位。 D14=1 有中断申请。向该位写0,可清除中断请求。 D13-D0: 为INT14-INT1中断申请标志。 D15: RTOSINT 。 D14: DLOGINT , D14=1 , 使能中断。 D14=0,屏蔽中断请求。 D13-D0: 为INT14-INT1中断使能位。INTx.2INTx.3INTx.4INTx.5INTx.6INTx.7INTx.8INTx.10123456715 - 8reservedPIEIERx register (x = 1 to 12)reservedPIEACKxPIE Inte
10、rrupt Acknowledge Register (PIEACKx)1243567890101115 - 12ENPIEPIEVECTPIECTRL register015 - 1 #include “DSP28_Device.h” PieCtrlRegs.PIEIER3.bit.INTx5 = 1; /enable CAPINT1 in PIE group 3 PieCtrlRegs.PIEACK.all = 0 x0004; /acknowledge the PIE group 3 PieCtrlRegs.PIECTRL.bit.ENPIE = 1; /enable the PIE外部
11、中断1控制寄存器XINT1CR外部中断2控制寄存器XINT2CR外部不可屏蔽中断控制寄存器 XNMICR外部中断1计数寄存器XINT1CTR外部中断2计数寄存器XINT2CTR外部不可屏蔽中断计数寄存器XNMICTR外部中断控制寄存器外部中断控制寄存器 F2812支持三个外部中断,XINT1、XINT2和XINT13; XINT13与不可屏蔽中断XNMI公用一个引脚; 每个外部中断可以使能/屏蔽、设定为上升/下降沿触发; Polarity:0下降沿产生中断;1上升沿产生中断 Enable:0屏蔽中断;1使能中断 外部中断控制寄存器 Polarity:0下降沿产生中断;1上升沿产生中断 Enab
12、le:0屏蔽中断;1使能中断 XINT2CRAddress 7071HNMI控制寄存器非屏蔽中断控制寄存器0:选择XINT131:选择XNMI外部中断1计数寄存器XINT1CTRD15D0, INTCTR, 16位自由计数的增计数器,时钟频率为SYSCLKOUT。对于每一个外部中断,有一个16位计数器,每当检测到中断沿时,就复位到0,可以用于精确记录中断发生的时刻。外部中断1计数寄存器XINT1CTR外部中断2计数寄存器XINT2CTR5 中断应用举例 配置 CPU定时器0产生定时中断; 每次中断LED的状态切换一次(0/1)中断矢量表const struct PIE_VECT_TABLE P
13、ieVectTableInit = PDPINTA_ISR, / EV-A PDPINTB_ISR, / EV-B rsvd_ISR, XINT1_ISR, XINT2_ISR, ADCINT_ISR, / ADC TINT0_ISR, / Timer 0 WAKEINT_ISR, / WD; 方法1:采用位域结构方式,在中断矢量表中定义所有的中断矢量,如外设中断组1(INT1)。 方法2:定义存放中断矢量的地址变量,如CPU定时器0为:volatile unsigned long *TINT0=(volatile unsigned long *)0 x000D4C;中断控制寄存器初始化voi
14、d InitPieCtrl(void) DINT; / Disable Interrupts at the CPU level PieCtrlRegs.PIECRTL.bit.ENPIE = 0; / Disable the PIE PieCtrlRegs.PIEIER1.all = 0; / Clear all PIEIER registers PieCtrlRegs.PIEIER2.all = 0; PieCtrlRegs.PIEIER12.all = 0; PieCtrlRegs.PIEIFR1.all = 0; / Clear all PIEIFR registers. PieCtrl
15、Regs.PIEIFR2.all = 0; PieCtrlRegs.PIEIFR12.all = 0; PieCtrlRegs.PIECRTL.bit.ENPIE = 1; / Enable the PIE PieCtrlRegs.PIEACK.all = 0 xFFFF; / Enables PIE to drive a pulse into the CPUmain()函数void main(void)InitSysCtrl(); /初始化系统控制DINT; /关中断IER = 0 x0000;IFR = 0 x0000;InitPieCtrl(); /初始化PIEInitPieVectTa
16、ble(); /初始化PIE中断矢量表,仅用于方法1InitPeripherals(); /初始化外设,可以根据需要配置EALLOW;PieVectTable.TINT0 = &ISRTimer0; /方法1*TINT0 = (unsigned long)ISRTimer0; /方法2EDIS; ConfigCpuTimer(&CpuTimer0, 150, 1000000); /配置CPU定时器0CpuTimer0Regs.TCR.bit.TSS = 0; /启动CPU定时器0 PieCtrl.PIEIER1.all = 0 x40; /使能CPU定时器0中断 IER |= 0 x0001;
17、EINT; / 使能全局中断 INTMfor(;) 定时器中断服务程序#define LED1_ON GpioDataRegs.GPFDAT.bit.GPIOF11=0#define LED1_OFF GpioDataRegs.GPFDAT.bit.GPIOF11=1unsigned int Led_Flag=1;interrupt void ISRTimer0(void)PieCtrl.PIEACK.all |= 0 x0001; if(Led_Flag = 1) LED1_ON;Led_Flag = 0; else LED1_OFF;Led_Flag = 1; 每次中断LED的状态切换一次
18、(0/1)初始化中断矢量表void InitPieVectTable(void) / Initializes the PIE vector table to a known 16i;Uint32 *Source = (void *) &PieVectTableInit;Uint32 *Dest = (void *) &PieVectTable;EALLOW;for(i=0; i 128; i+) *Dest+ = *Source+;EDIS;PieCtrlRegs.PIECRTL.bit.ENPIE = 1; / Enable the PIE Vector Table3级中断
19、机制F2812 PIE 中断INTx.8INTx.7INTx.6INTx.5INTx.4INTx.3INTx.2INTx.1INT1WAKEINTTINT0ADCINTXINT2XINT1PDPINTBPDPINTAINT2T1OFINTT1UFINTT1CINTT1PINTCMP3INTCMP2INTCMP1INTINT3CAPINT3CAPINT2CAPINT1T2OFINTT2UFINTT2CINTT2PINTINT4T3OFINTT3UFINTT3CINTT3PINTCMP6INTCMP5INTCMP4INTINT5CAPINT6CAPINT5CAPINT4T4OFINTT4UFINT
20、T4CINTT4PINTINT6MXINTMRINTSPITXINTASPIRXINTAINT7INT8INT9SCITXINTBSCIRXINTBSCITXINTASCIRXINTAINT10INT11INT12ECAN0INTECAN1INT共45个中断源IFR中断标志寄存器111(IFR)“Latch”INT1INT2INT14CoreInterruptCPU(INTM)“Global Switch”(IER)“Switch”中断使能寄存器INT8INT7INT6INT5INT4INT3INT2INT101234567中断确定 :IFR Bit = 1中断未确定 :IFR Bit = 0
21、CPU识别中断之后IFR由CPU复位复位状态为0 INT8INT7INT6INT5INT4INT3INT2INT101234567使能: Set IER Bit = 1禁止: Clear IER Bit = 0DINT/EINT,禁止中断复位清零/* Interrupt Enable Register */extern cregister volatile unsigned int IER; IER |= 0 x0008;/enable INT4 in IER IER &= 0 xFFF7;/disable INT4 in IER中断全局使能INTM用来做全局的使能/禁止中断:使能:INTM
22、= 0禁止:INTM = 1 (reset value)INTM只能被汇编语言修改:INTMST1 Bit 0外设中断的使能,需要将与该中断相关的外设寄存中的中断使能位置1; 外设级以XINT2 外部中断2为例 在main()函数中 XIntruptRegs.XINT2CR.all=0 x0001; /使能,下降沿触发达盛exp4_06_int 例:按一次键,LED灯变化一次以XINT2 外部中断2为例 PieCtrlRegs.PIEIER1.all = M_INT5;PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;2. 中断服务程序中在DSP281x_Devic
23、e.h 中 #define M_INT5 0 x00101. 在main()函数中在DSP281x_PieCtrl.h 中 #define PIEACK_GROUP1 0 x0001PIE级PIE中断的使能。需要使能某个外设中断,将其相应组的使能寄存器PIEIERx的相应位进行置位; PIE应答寄存器PIEACK相关位的清除,使得CPU能够响应同组的其他中断。 CPU级IER |= M_INT1 ; EINT; / 使能全局中断INTMERTM; / 使能实时中断DBGM以XINT2 外部中断2为例 在main()函数中在DSP281x_Device.h 中 #define M_INT1 0
24、x0001在DSP281x_Device.h 中 #define EINT asm( clrc INTM)#define ERTM asm( clrc DBGM)以XINT2 外部中断2为例 在main()函数中 EALLOW; / This is needed to write to EALLOW protected registers PieVectTable.XINT2 = &xint2_isr; /中断函数入口地址 EDIS; 在DSP281x_Device.h 中 #define EALLOW asm( EALLOW)#define EDIS asm( EDIS)#include DSP281x_Device.h / DSP281x Headerfile Include File#include DSP281x_Examples.h / DSP281x Examples Include FileUint16 show=0 x00aa; /定义欲显示值Uint32 Xint2InterruptCount;/*主程序*/void init_xint2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生地理信息系统模拟湖泊生态系统碳汇效应课题报告教学研究课题报告
- 2024年同济大学浙江学院马克思主义基本原理概论期末考试模拟试卷
- 2025年四川大学锦江学院马克思主义基本原理概论期末考试笔试题库
- 2024年咸阳师范学院马克思主义基本原理概论期末考试真题汇编
- 小学科学探究活动教师数字能力评价方法创新与多元评价主体互动教学研究课题报告
- 2025年海口经济学院马克思主义基本原理概论期末考试笔试真题汇编
- 2025年四平现代职业学院马克思主义基本原理概论期末考试参考题库
- 2024年绵阳飞行职业学院马克思主义基本原理概论期末考试笔试题库
- 2025年黑龙江省政法管理干部学院马克思主义基本原理概论期末考试真题汇编
- 2025年辽宁地质工程职业学院马克思主义基本原理概论期末考试真题汇编
- 2024-2025学年重庆市大足区六年级(上)期末数学试卷
- 2025年高级经济师金融试题及答案
- 2026年哈尔滨科学技术职业学院单招职业技能测试题库带答案详解
- GB/T 7714-2025信息与文献参考文献著录规则
- 涉融资性贸易案件审判白皮书(2020-2024)-上海二中院
- DB65∕T 8031-2024 高海拔地区民用建筑设计标准
- 2025年人社局工作考试题及答案
- 2026年山东力明科技职业学院单招职业技能考试题库含答案详解
- 2025内蒙古能源集团智慧运维公司社会招聘(105人)笔试参考题库附带答案详解(3卷)
- 2026元旦主题班会:马年猜猜乐新春祝福版 教学课件
- 甘肃省兰州市本年度(2025)小学一年级数学统编版期末考试(上学期)试卷及答案
评论
0/150
提交评论