运行F28M35提供的例程,ctom_ipcdrivers_lite和ctom_ipcdrivers,按照烧录和启动方法先烧录M3程序,再烧录C28程序,然后,RESET C28,再RESET M3,然后,RESTART M3 , RUN M3 再RUN C28,使用ctom_ipcdrivers_lite例程出现程序停止在IPCLiteCtoMGetResult函数判断处,
while (IPCLiteCtoMGetResult(&usRWord16,IPC_LENGTH_16_BITS,
IPC_FLAG32) != STATUS_PASS)
{
}
if (usWWord16 != usRWord16)
{
ErrorCount++;
}
使用ctom_ipcdrivers例程出现程序停止在IPCPUT函数处(// Wait until Put Buffer slot is free),由此可以说明,C28向M3发送数据后,M3没有回复数据给C28。请问大侠这是什么问题?
unsigned short
IpcPut (volatile tIpcController *psController, tIpcMessage *psMessage,
unsigned short bBlock)
{
unsigned short writeIndex;
unsigned short readIndex;
writeIndex = *(psController->pusPutWriteIndex);
readIndex = *(psController->pusPutReadIndex);
// Wait until Put Buffer slot is free
while (((writeIndex + 1) & MAX_BUFFER_INDEX) == readIndex)
{
// If designated as a "Blocking" function, and Put buffer is full,
// return immediately with fail status.
if (!bBlock)
{
return (STATUS_FAIL);
}
readIndex = *(psController->pusPutReadIndex);
}
// When slot is free, Write Message to PutBuffer, update PutWriteIndex,
// and set M3 IPC INT Flag
psController->psPutBuffer[writeIndex] = *psMessage;
writeIndex = (writeIndex + 1) & MAX_BUFFER_INDEX;
*(psController->pusPutWriteIndex) = writeIndex;
HWREG(MTOCIPC_BASE + IPC_O_MTOCIPCSET) |= psController->ulPutFlag;
return (STATUS_PASS);
}
另外,我的F28M35程序烧录到FLASH后,仿真可以运行,断电后不能重启运行,这是怎么回事?本人F28M35新手,望指教。谢谢。