dsp 280049 pie 中断原理及其配置过程

1. 先看系统总中断图

系统一共有14路中断,INT1-14,其中,INT13,INT14分别为TIME1,TIM2的中断。
在这里插入图片描述
其中INT1-12,通过(ePIE,缩写为PIE)模块复用为多个外设共用,每个中断复用为16个信道(也叫中断向量),通过启用16bit寄存器(PIEERx),16bit标记寄存器的(PIEIFRx)和PIE 确认寄存器中的位(PIEACK)来进行控制。
具体可以通过仿真查看PieCtrlRegs寄存器。
在每个中断16路信道中,编号低的信道具有较高的优先级。

2. 外设中断传递架构

在这里插入图片描述
总的来说大概流程是这样
外设中断标志产生->外设中断使能->PIEx IFR置位->PIExIER使能->判断PIExACK->IFR置位->IER使能->判断INTM位->CPU执行中断程序。

3. 中断向量表

上面描述的INT1-12,每个中断的16路信道连接的具体外设表如下所示
在这里插入图片描述

4. 配置过程

  1. 关闭系统所有中断
    DINT;
  2. 关闭PIE,PIE初始化,清零PIEIER和PIEIFR,
    InitPieCtrl();
  3. 禁止所有CPU中断,清除CPU中断相关标志位,
    IER = 0x0000;
    IFR = 0x0000;
  4. 初始化中断向量表
    InitPieVectTable();
    5.设置中断服务函数入口。
    EALLOW; // 这需要写入到EALLOW 受保护的注册表
    PieVectTable.XINT1_INT = &xint1_isr;
    PieVectTable.XINT2_INT = &xint2_isr;
    PieVectTable.XINT3_INT = &xint3_isr;
    PieVectTable.XINT4_INT = &xint4_isr;
    EDIS; //这需要禁用对EALLOW 受保护寄存器的写入
  5. 在PIE 中启用XINT1 和XINT2
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //启用PIE 块
    PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //启用PIE 组1 INT4
    PieCtrlRegs.PIEIER1.bit.INTx5 = 1; // 启用PIE 组1 INT5
    PieCtrlRegs.PIEIER12.bit.INTx1 = 1; // 启用PIE 组12 INT1
    PieCtrlRegs.PIEIER12.bit.INTx2 = 1; // 启用PIE 组12 INT2
    7.启用CPU中断
    IER |= M_INT1; // 启用CPU INT1
    IER |= M_INT12; // 启用CPU INT12
    8.开启全局中断
    EINT; //启用全局中断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值