好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

DSP中断优先级设置.docx

2页
  • 卖家[上传人]:s9****2
  • 文档编号:469192938
  • 上传时间:2023-03-05
  • 文档格式:DOCX
  • 文档大小:12.29KB
  • / 2 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 原以为2812 中断不能设置优先级实际上硬件上优先级是做好的但软件上有办法来设置优先级请往下看:1. 首先要找到文件,DSP281x_SWPrioritizedDefaultIsr.c 和 DSP281x_SWPrioritizedIsrLevels.h 加载到你的程序当中2. 在DSP281x_SWPrioritizedIsrLevels.h文件中先设置中断组的优先级级别其中:0表示不使用;1表示优先级最高中;16表示优先级最低;比如:我设置第9组优先级最高,第3组次之,第2, 4, 6组优先级为第三其他以此类推 0表示不用defineINT1PL4// Group1 Interrupts (PIEIER1)#defineINT2PL3// Group2 Interrupts (PIEIER2)#defineINT3PL2// Group3 Interrupts (PIEIER3)#defineINT4PL3// Group4 Interrupts (PIEIER4)#defineINT5PL4// Group5 Interrupts (PIEIER5)#defineINT6PL3// Group6 Interrupts (PIEIER6)#defineINT7PL0// reserved#defineINT8PL0// reserved#defineINT9PL1// Group9 Interrupts (PIEIER9)#defineINT10PL0// reserved#defineINT11PL0// reserved#defineINT12PL0// reserved#defineINT13PL5// XINT3#defineINT14PL5// INT14 (TINT2)#defineINT15PL5// DATALOG#defineINT16PL5// RTOSINT3.级中断设置好以后,我们就要设置每一组里的中断优先级级别。

      其中: 0表示不用; 1表示优先级最高; 8表示优先级最低;以第9组为例说明:其中,ECAN0INTA优先级最高;ECAN1INTA为第2,SCIRXINTA为第3其他自己数defineG91PL3// SCIRXINTA (SCI-A)#defineG92PL5// SCITXINTA (SCI-A)#defineG93PL6// SCIRXINTB (SCI-B)#defineG94PL4// SCITXINTB (SCI-B)#defineG95PL1// ECAN0INTA (ECAN-A)#defineG96PL2// ECAN1INTA (ECAN-A)#defineG97PL0// reserved#defineG98PL0// reserved4.由上可知所有组里第9组优先级最高,第9组中ECAN0INTA(G95PL)优先级最高优先级设置好后到DSP281x_SWPrioritizedDefaultIsr.c文件中找到相应的函数我这里就拿ECAN0INTA(ECAN-A)来作为例子说明;这个中断对应的函数为(DSP281x_SWPrioritizedDefaultIsr.c文件里可以找到)如下:// // eCAN-A Default ISRs://// Connected to PIEIER9_5 (use MINT9 and MG95 masks):#if (G95PL != 0)interrupt void ECAN0INTA_ISR(void) // eCAN-A{// Set interrupt priority:volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;/* 以下表示,大于第9组中断级别的中断使能,小于第 9组中断级别的中断不使能*/IER |= M_INT9;IER &= MINT // Set "global" priority/*优先级大于第 9组中第5 个中断的中断使能,否则不使能*/PieCtrlRegs.PIEIER9.all &= MG95; // Set "group" priorityPieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interruptsEINT; //全局中断使能,但因为此中断优先级最高,所以其他一般中断不能打断它// Insert ISR Code here CAN_ISR(); //你自己定义的中断处理程序,在此程序中写你自己的代码;// Next line for debug only (remove after inserting ISR Code)://ESTOP0; //仿真停止,仿真时可以用。

      // Restore registers saved:DINT; //关中断PieCtrlRegs.PIEIER9.all = TempPIEIER;}#endif其他中断的设置以此为例,只要在 .h 文件中设置好优先级,再将你自己的中断处理代码插入相应的中断函数即可此时你就可以实现高 优先级可以打断低优先级的中断而且也可以中断嵌套如果不想低优先级的程序不想被打断则不允许 EINT 即可但是要注意 TI 的 DSP281x_SWPrioritizedDefaultIsr.c 文件中有一些笔误,可能会使你的中断只能出现一些,或者是出其他问题此时你要查一下,看是否有明显的错误;错误不是很多,我记不清了,就不在这里写出来了大家先试试自己的中断吧!。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.