第4章 中断系统与应用学生用修改

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
外部中断1控制寄存器xint1cr外部中断2控制寄存器xint2cr外部不可屏蔽中断控制寄存器xnmicr外部中断1计数寄存器xint1ctr外部中断2计数寄存器xint2ctr外部不可屏蔽中断计数寄存器nmictr外部中断控制寄存器37外部中断控制寄存器f2812支持三个外部中断xint1xint2和xint13其中xint13与不可屏蔽中断xnmi公用一个引脚每个外部中断可以使能屏蔽设定为上升下降沿触发polarity0下降沿中断1上升沿中断enable0屏蔽中断1使能中断38外部中断控制寄存器polarity0下降沿中断1上升沿中断enable0屏蔽中断1使能中断xint2craddress7071h39nmipolarity0下降沿中断1上升沿中断select0timer1至int13
};
struct PIE_VECT_TABLE PieVectTableInit = { …… PDPINTA_ISR, // EV-A PDPINTB_ISR, // EV-B rsvd_ISR, XINT1_ISR, XINT2_ISR, ADCINT_ISR, // ADC TINT0_ISR, // Timer 0 WAKEINT_ISR, // WD ……
PIE支持多达96个中断源,其中8个中断源为一组,复用一个中断
信号,总共有12个中断信号(INT1~INT12)。
PIE 的中断优先级由高到低分别是INT1-INT12,组内8个优先级
由高到低的次序依次是INTx.1-INTx.8。
4
PIE中断控制框图
0 1 1
0
1
1
5
4.1 PIE中断控制-概述
18
19
20
21
22
23
F2812 PIE 中断
INTx.8 INT1
WAKEINT
INTx.7
TINT0
INTx.6
ADCINT
INTx.5
XINT2 T1CINT CAPINT1 T3CINT CAPINT4 MRINT
INTx.4
XINT1
INTx.3
INTx.2
PDPINTB
INTx.1
3个外部中断源
14
从外设到CPU的多通道中断请求流程
15
4.3 PIE中断向量表
每个中断源都有相应的中断向量存放在RAM中,构
成整个系统的中断向量表存放中断服务程序的地址。
中断向量表由256×16位的SRAM构成,每个中断向
量占用2个16位的地址空间。
16
4.3 PIE中断向量表
17
置1使能相应的外设中断;置0屏蔽该中断源。
34
CPU中断标志寄存器IFR
(Interrupt Flag Register)
D15: RTOSINT ,实时操作系统中断标志位。 D14: DLOGINT flag, 数据记录中断标志位。 D14=1 有中断申请。向该位写0,可清除中断请求。 D13-D0: 为INT14-INT1中断申请标志。
1.外设级
一个中断产生事件出现在某个外设中和该事件相关的中
断标志位,会在这个相应的外设寄存器中被置为1。
如果使能该中断,且中断标志仍然置位,那么就会向
PIE发出一个中断请求。
外设寄存器中的中断标志手工清除。
6
4.1 PIE中断控制-概述
2. PIE级
PIE模块将8个外设或外部中断分为1组,每组复用1个
24
25
26
27
4.4 寄存器
PIECTRL PIEACK PIEIERx PIEIFRx
PIE控制寄存器 PIE应答寄存器
(x=1~12) PIE中断使能寄存器 (x=1~12) PIE中断标志寄存器
28
PIE控制寄存器PIECTRL

D15-D1 ,PIEVECT, 表示从矢量表中取出的矢量地址。 从这个地址读取中断服务函数的地址

每个组都被反馈到CPU内核的12条中断线( INT1-
INT12 )的其中一条上。
3
4.1 PIE中断控制-概述
F281×共支持17个CPU级中断,包括一个NMI和16个可屏蔽中断 (INT1~INT14,RTOSINT和DLOGINT)

外设中断扩展模块(PIE)中多个中断源复用1个中断信号。
PIECTRL register
PIEVECT
ENPIE
#include “DSP28_Device.h” PieCtrlRegs.PIEIER3.bit.INTx5 = 1; PieCtrlRegs.PIEACK.all = 0x0004; //enable CAPINT1 in PIE group 3 //acknowledge the PIE group 3
中断请求;
需要一个集中的外设中断扩展模块(PIE)
Peripheral
Interrupt Expansion (PIE) block;
2
第4章 中断系统与应用

外设中断扩展模块把许多中断源多路复用成一个较小
的中断输入集。

PIE模块支持96个不同的中断,这些中断分成12个组,
每个组有8个中断;
第4章 中断系统与应用
4.1 4.2 4.3 4.4 4.5

PIE中断控制-概述 中断向量表映射 PIE中断向量表 寄存器 中断应用举例
1
第4章 中断系统与应用
28x器件有许多外设,每个外设都可以产生一个或多
个中断请求,从而去响应多个外设级上的事件。
在CPU级上,CPU没有足够的能力去处理所有外设的

43
0:选择XINT13 1:选择XNMI
44
外部中断1计数寄存器XINT1CTR 对于每一个外部中断,有一个16位计数器,每当检 测到中断沿时,就复位到0,可以用于精确记录中断 发生的时刻。
D15~D0,
INTCTR, 16位自由计数的增计数器,时钟 频率为SYSCLKOUT。
45
外部中断1计数寄存器XINT1CTR
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //enable the PIE
38
外部中断控制寄存器
外部中断1控制寄存器XINT1CR 外部中断2控制寄存器XINT2CR
外部不可屏蔽中断控制寄存器
XNMICR
外部中断1计数寄存器XINT1CTR 外部中断2计数寄存器XINT2CTR 外部不可屏蔽中断计数寄存器XNMICTR
CPU中断。这些中断被分为12个组:
PIE组1
~ PIE组12,每个组中的中断被多路汇集进入1个 CPU中断。 1,而PIE组
例如,PIE组1被多路汇集进入CPU中断INT
12被多路汇集进入CPU中断INT12。
7
4.1 PIE中断控制-概述
对于多路复用的中断源,PIE块中的每个中断组都
当一个中断激活时,相应位置1。
当有中断产生,相应位置1;写0清除该位。一般不要软件写0。 当DSP响应该中断后,硬件将标志位清零。 读寄存器可判断是否有待响应的中断。 32

33
PIE中断使能寄存器PIEIERx, x=1~12
D7~D0
,INTx.8~ INTx.1 , 表示中断使能。

D0,ENPIE,使能从PIE取中断向量。为1时,使能。
29
PIE应答寄存器PIEACK
D11-D0
,PIEACK,写入1到对应的中断位可以 清除该位,清除后当该组的中断申请到来时,允 许PIE向CPU申请中断。
30
31
PIE中断标志寄存器PIEIFRx, x=1~12
D7~D0
,INTx.8~ INTx.1 , 表示中断是否激活。
CMP2INT
T2CINT CMP5INT T4CINT
CMP1INT
T2PINT CMP4INT T4PINT
SPITXINTA SPIRXINTA
INT8
INT9 INT10 INT11 INT12
EБайду номын сангаасAN1INT ECAN0INT SCITXINTB SCIRXINTB SCITXINTA SCIRXINTA
39
40
外部中断控制寄存器

F2812支持三个外部中断,XINT1、XINT2和XINT13; XINT13与不可屏蔽中断XNMI公用一个引脚; 每个外部中断可以使能/屏蔽、设定为上升/下降沿触发;

Polarity:0--下降沿产生中断;1--上升沿产生中断 Enable:0--屏蔽中断;1--使能中断 41
INTx.8 INTx.7 INTx.6 INTx.5 INTx.4 INTx.3 INTx.2
INTx.1
PIE Interrupt Acknowledge Register (PIEACKx)
15 - 12 11 10 9 8 7 6 5 4 3 2 1 0
reserved
PIEACKx
15 - 1 0
35
CPU中断使能寄存器IER
( Interrupt Enable Register)
D15: RTOSINT 。 D14: DLOGINT , D14=1 , 使能中断。 D14=0,屏蔽中断请求。 D13-D0: 为INT14-INT1中断使能位。
36
37
总结 PIE 寄存器
PIEIFRx register
有一个相关标志位PIEIFRx.y和使能位PIEIERx.y。
每个中断组(1NT1~INT12)都有一个应答位
PIEACKx。
8
4.1 PIE中断控制-概述
3. CPU级
一旦某个中断请求被送往CPU,CPU级中与INTx相关
的中断标志(IFR )位就被置位;
标志位被锁存在IFR后,CPU不会马上去执行相应的
中断,而是等待CPU使能IER寄存器,并对全局中断
屏蔽位INTM进行使能。
9
PIE中断流程图
PIEIFRx.y
IERx
PIEIERx.y
INTM
10
4.2 中断向量表的映射
在C28X系列DSP中,中断矢量表可以映射到5个不同的
区间: M1 SARAM, M0 SARAM, BROM, XINTF Zone 7,PIE 矢量表。 在F2812中,只有PIE矢量表可以使用。 使能PIE矢量表,令ENPIE=1;寄存器PIECTRL的位0。 复位时, ENPIE=0,PIE被禁止。 PIE向量(vector)表用来存储系统的各个中断服务子程 序ISR的地址。
15 - 8 7
(x = 1 to 12)
6 5 4 3 2 1 0
reserved
INTx.8 INTx.7 INTx.6 INTx.5 INTx.4 INTx.3 INTx.2
INTx.1
PIEIERx register
15 - 8 7
(x = 1 to 12)
6 5 4 3 2 1 0
reserved
11
4.2 中断向量表的映射
PIEVECT(15:1)指明中断矢量表中的中断矢量地址 ENPIE=1时所有中断矢量取自PIE中断矢量表 ENPIE=0时取自Boot ROM中的CPU矢量表或外部接口Zone 7
12
4.2 中断向量表映射
PIE中断向量表映射地址
13
F281×的中断源
中断源:
45个PIE中断源 16个CPU中断 一个NMI中断
PDPINTA
INT2
INT3 INT4 INT5 INT6 INT7
T1OFINT
CAPINT3 T3OFINT CAPINT6
T1UFINT
CAPINT2 T3UFINT CAPINT5 MXINT
T1PINT
T2OFINT T3PINT T4OFINT
CMP3INT
T2UFINT CMP6INT T4UFINT
外部中断控制寄存器
XINT2CR-Address 7071H


Polarity:0--下降沿产生中断;1--上升沿产生中断 Enable:0--屏蔽中断;1--使能中断
42
非屏蔽中断控制寄存器
NMI控制寄存器
Polarity:0--下降沿产生中断;1--上升沿产生中断 Select: 0--Timer1连接到至INT13; 1--XNMI_XINT13连接到INT13; Enable:0--屏蔽XNMI中断;1--使能XNMI中断
46
外部中断2计数寄存器XINT2CTR
47
4.5 中断应用举例
配置 CPU定时器0产生定时中断; 每次中断LED的状态切换一次(0/1)

48
中断矢量表
方法1:采用位域结构方式,在中断矢量表中定义所有的中断矢 量,如外设中断组1(INT1)。
const



方法2:定义存放中断矢量的地址变量,如CPU定时器0为:
volatile unsigned long *TINT0=(volatile unsigned long *)0x000D4C;
49
中断控制寄存器初始化
void {
InitPieCtrl(void)
DINT; // Disable Interrupts at the CPU level PieCtrlRegs.PIECRTL.bit.ENPIE = 0; // Disable the PIE PieCtrlRegs.PIEIER1.all = 0; PieCtrlRegs.PIEIER2.all = 0; …… PieCtrlRegs.PIEIER12.all = 0; // Clear all PIEIER registers


PieCtrlRegs.PIEIFR1.all = 0; PieCtrlRegs.PIEIFR2.all = 0; …… PieCtrlRegs.PIEIFR12.all = 0;
相关文档
最新文档