主题中讨论的其他器件:C2000WARE
尊敬的团队:
我的客户想要将 例程(IPC_ex2_msgqueue_c28x1.c)的通信方法更改为中断方法。 他作了以下修改:
1、 添加了中断接收功能
//
//标志1的 IPC ISR
// C28x 内核使用标志0发送带有消息队列的数据
//
_interrupt void IPC_ISR1 ()
{
int i;
//IPC_Message_t TxMsg、RxMsg;
bool status = false;
//
//从消息队列中读取消息
//
IPC_readMessageFromQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_ADDR_CORRECT_ENABLE、
&RxMsg、IPC_NONBLOCK_CALL);
if (RxMsg.command =IPC_CMD_READ_MEM)
{
状态= true;
//
//读取和比较数据
//
for (i=0;i<RxMsg.dataaw1;i++)
{
if ((*(uint32_t *) RxMsg.address + i)!= i)
状态= false;
}
}
//
//确认标志
//
IPC_ackFlagRtoL (IPC_CPU1_L_CM_R、IPC_FLAG1);
//
//确认 PIE 中断。
//
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_Group1);
}
2、 启用 IPC 中断
//
IPC_registerInterrupt (IPC_CPU1_L_CM_R、IPC_INT1、IPC_ISR1);
//
初始化消息队列
//
IPC_initMessageQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_INT1、IPC_INT1);
3、添加了用于测试的发送环路
while (1)
{
DEVICE_DELAY_US (100000);
IPC_sendMessageToQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_ADDR_CORRECT_ENABLE、
&TxMsg、IPC_NONBLOCK_CALL);
DEVICE_DELAY_US (100000);
}
测试结果是 CPU1和 CM 之间的 IPC 通信不能中断。 问题是什么? 下面是完整的代码:
此致、
绿色