TMS320F28377D: IPC无法进入中断

Part Number: TMS320F28377D
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

TMS320F28377D IPC无法进中断

CPU1设置IPC的中断0,CPU2相应该中断,查看CPU1的IPC_FLAG的bit0和CPU2的IPC_STS的bit0,都置位为1,但是CPU2无法进入中断

我用TI的例程,也不能进入中断

C:\ti\controlSUITE\device_support\F2837xD\v210\F2837xD_examples_Dual\cpu01_to_cpu02_ipcdrivers

CPU1的程序:

while(1)

{

DELAY_US(500);   //每隔0.5ms

SendIpcFlag(0); // 触发CPU1 Ipc中断0

}

CPU2的程序:

1)初始化程序

PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block

EALLOW; 
PieVectTable.IPC0_INT = &CPU01toCPU02IPC0IntHandler;
EDIS; 


IER |= M_INT1 ;

2)中断程序

interrupt void CPU01toCPU02IPC0IntHandler (void)
{
// Acknowledge IPC INT0 Flag and PIE to receive more interrupts
IpcRegs.IPCACK.bit.IPC0 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

3)调试的现象

  • 您好

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待

  • CPU2的程序:

    1)初始化程序

    PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block

    EALLOW; 
    PieVectTable.IPC0_INT = &CPU01toCPU02IPC0IntHandler;
    EDIS; 


    IER |= M_INT1 ;

    PieCtrlRegs.PIEIER1.bit.INTx13 = 1; //少粘贴的一句

    CPU2的初始化程序应该是这样,少粘贴了一句

  • 您好,

        在 C2000Ware 中检查了cpu01_to_cpu02_ipcdrivers示例,可以看到 IPC 中断得到了正确的服务。

    您是直接从 ControlSuite 运行提到的示例,还是只是您的参考?如果不直接使用,您能否确保在应用程序中完成这些作:

    IER |= M_INT1;启用连接到上层 PIE IPC INT0-3 的 CPU INT1
    EINT;启用全局中断 INTM

x 出现错误。请重试或与管理员联系。