各位大大,版主,在应用KEAZ128进行CAN开发,在CodeWarrior7.0的环境下进行CAN应用开发,用官方的库有个大大的疑问,代码如下:
while(1)
{
CAN_CheckSendBufferFrame(MSCAN,&sCAN_TxBuff);
while(CAN_ReadOneFramefromBufferQueue(&sRxFrameInfo))
{
printf("receive a frame data!\r\n");
printf("ID is 0x%x!\r\n",sRxFrameInfo.ID_Type);
printf("Data length is %d\r\n",sRxFrameInfo.DLR);
for(i=0;i<sRxFrameInfo.DLR;i++)
{
printf("0x%x,",sRxFrameInfo.DSR[i]);
}
printf("\r\n");
}
for(u32Delay=0;u32Delay<0xFFFFF;u32Delay++);
sCANTxItemInfo.u8DataBuff[7]++;
CAN_SendItemToBuffer(MSCAN,&sCANTxItemInfo,&sCAN_TxBuff);
}
在主程序中进行SCAN数据接收检查:CAN_CheckSendBufferFrame(MSCAN,&sCAN_TxBuff); 这个函数里面每次进来,都要进行关闭全局中断,然后再开启全局中断,SCAN库的调用几个函数里,都差不多有几个地方要进行类似的操作,这样会影响整个系统的运行效率呀,为什么没人提过这个问题吗? 这样的设计应用在实时系统根本不能用的吧? |