工具/软件:Code Composer Studio
对于器件 TMS320F28377S、是否可以指定由 C 定义的 ISR 加载到闪存中并在 RAM 中运行。 例如、我定义了一个 ISR、如下所示:
#pragma CODE_SECTION (Svpwm_ISR、"ramfuncs ")
_interrupt void Svpwm_ISR (void)
{xxxx;
xxxx;
EPwm1Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACX.ALL =PIEACK_Group3;
}
在 CMD 文件中、指定了 ramfuncs 段存储在 FLASHD 中并在 RAMLS1中运行。
我的程序通过以下语句启用上述 ISR:
EPwm1Regs.TBCTR =0;
EPwm2Regs.TBCTR =0;
EPwm3Regs.TBCTR =0;
EALLOW;
PieVectTable.EPWM1_INT=&Svpwm_ISR;
EDIS;
EPwm1Regs.ETCLR.ALL =5;
EPwm1Regs.ETSEL.ALL =0xA09;
是否存在任何问题?每次以相同的方式启用 ISR 时、ISR 都有6%的机会无法正确启用、导致 ePWM 模块输出顺序不一致的 SVPWM 波、或导致看门狗超时(大约26ms)复位。 我不知道为什么。 但是、一旦启用 ISR、它可以连续运行。
EPWM1中断频率为6.4k。