工具/软件:Code Composer Studio
我尝试将消息队列从 CM 发送到 CPU1。 CM 看起来已成功发送消息队列。 但 CPU1中的中断不会触发。 以下 是两个内核的伪代码。 您能建议缺少什么吗? 谢谢。
在 CM main()中:
IPC_clearFlagLtoR (IPC_CM_L_CPU1_R、IPC_FLAG_ALL);
IPC_initMessageQueue (IPC_CM_L_CPU1_R、&messageQueue、IPC_INT0、IPC_INT0);
IPC_SYNC (IPC_CM_L_CPU1_R、IPC_FLAG31);
IPC_sendMessageToQueue (IPC_CM_L_CPU1_R、&messageQueue、IPC_ADDR_correction_enable、&TxMsg、IPC_Blocking_call);
while (1);
在 CPU1 main()中:
IPC_clearFlagLtoR (IPC_CPU1_L_CM_R、IPC_FLAG_ALL);
IPC_initMessageQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_INT0、IPC_INT0);
IPC_registerInterrupt (IPC_CPU1_L_CM_R、IPC_INT0、IPC_ISR1);
IPC_SYNC (IPC_CPU1_L_CM_R、IPC_FLAG31);
while (1);
在 CPU1中、
void IPC_ISR1()
{
IPC_readMessageFromQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_ADDR_correction_enable、&RxMsg、IPC_NonBlocking_call);
IPC_ackFlagRtoL (IPC_CPU1_L_CM_R、IPC_FLAG0);
}
我在调试模式下运行了两个内核。 我在 CM 中的 IPC_ISR1()内设置一个断点。 进入无限 while 循环后、CPU1中的标志 PIEIFR11.INTx9为0。 在 CM 中运行行 IPC_sendMessageToQueue()后,我检查了 PIEIFR.INTx9并发现该标志已设置。 但是、ISR 内的断点没有停止。 PIEIFR11.INTx9是 CMTOCPUxIPCINTR0中断的标志寄存 器、我认为该 IFR 标志对应于 IPC_FLAG0。 你能提供什么建议吗?
谢谢。



