This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C123GXL:MSG_OBJ_DATA_LOST 标志。 CANMessageGet

Guru**** 2460850 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/652415/ek-tm4c123gxl-msg_obj_data_lost-flag-canmessageget

器件型号:EK-TM4C123GXL

您好!

MSG_OBJ_DATA_LOST 标志被置位、但永远不会被 CANMessageGet 清除。

我尝试 了 e2e.ti.com/.../159509 、但没有发生任何情况。

我的代码是:

while (1)
{
ROM_CANMessageSet (CAN0_BASE、TXOBJECT、&g_sCAN0TxMessage、MSG_OBJ_TYPE_TX_REMOTE);

延迟(50);//等待100ms

if (g_ui32勘误标志!= 0)
{//检查错误
//UARTprintf ("CAN 总线错误\n");
CANErrorHandler();
}


if (g_bRXFlag)
{//发生 Rx 中断

G_sCAN0RxMessage.pui8MsgData = msgData;//设置指向 Rx 缓冲区的指针
ROM_CANMessageGet (CAN0_BASE、RXOBJECT、&g_sCAN0RxMessage、MSG_OBJ_TYPE_RX);//从 CAN 外设读取 CAN 消息对象 RXOBJECT

G_bRXFlag = 0;//清除 Rx 标志

if (!(g_sCAN0RxMessage.ui32Flags & MSG_OBJ_DATA_LOST))
{
UARTprintf ("CAN_ID:0x%2x\t"、g_sCAN0RxMessage.ui32MsgID);
UARTprintf ("数据:%02x %02x %02x %02x\n"、msgData[3]、msgData[2]、msgData[1]、msgData[0]);
}
其他
{
G_sCAN0RxMessage.ui32Flags &&~MSG_OBJ_DATA_LOST;
ROM_CANMessageGet (CAN0_BASE、RXOBJECT、&g_sCAN0RxMessage、MSG_OBJ_TYPE_RX);

}
}

点击次数。

此致

安德烈斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Andres、

    在您的 Else 语句中、您使用的 API 不正确。 您已使用:

    ROM_CANMessageGet 

    但 Stellaris Paul 的帖子指示使用:

    CANMessageSet 

    或者在您的情况下、

    ROM_CANMessageSet 

    请尝试进行该调整、然后查看问题是否解决。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph、

    很抱歉,我没有意识到它是有效的。 是否有关于丢失数据的任何解释? 我通常会在某个时间点丢失数据。 直到那时、它才是完美的。

    此致

    安德烈斯