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