主题中讨论的其他器件:TM4C123、
你(们)好
客户使用 CAN 模块时出现以下问题。
它们通过 Tivaware CANMessageSet 设置三个对象(30、31、32)。 但仅传输按摩对象32。
但是、如果它们通过调试或设置等待周期来保留 CANMessageSet 执行之间的间隔、则所有三个按摩对象都将正确发送。
您对此问题有什么建议吗?
这是代码。
(第2条
#define TXOBJECT_ST 30
#define TXOBJECT_END 32
uint8_t g_ui8CAN0TXMsgData[3][8];
tCANMsgObject g_sCAN0TxMessage[3];
int main (空)
{
uint32_t MNO;
uint32_t count、s_count;
uint32_t status;
//按摩初始化
G_sCAN0TxMessage[0].ui32MsgIDMask = 0;
G_sCAN0TxMessage[0]。pui8MsgData =(uint8_t *)(&g_ui8CAN0TXMsgData[0]);
G_sCAN0TxMessage[1].ui32MsgIDMask = 0;
G_sCAN0TxMessage[1].pui8MsgData =(uint8_t *)(&g_ui8CAN0TXMsgData[1][0]);
G_sCAN0TxMessage[2]。ui32MsgIDMask = 0;
G_sCAN0TxMessage[2]。pui8MsgData =(uint8_t *)(&g_ui8CAN0TXMsgData[2][0]);
//数据 TX 过程
for (count=0;count<10;count++){
for (s_count=TXOBJECT_ST;s_count <= TXOBJECT_END;s_count++){
MNO = s_count - TXOBJECT_ST;
G_ui8CAN0TXMsgData[MO][0]= count*3 + MNO;
G_ui8CAN0TXMsgData[MO][1]= count*3 + MNO;
G_ui8CAN0TXMsgData[MO][2]= count*3 + MNO;
G_ui8CAN0TXMsgData[MO][3]= count*3 + MNO;
G_ui8CAN0TXMsgData[MO][4]=计数*3 + MNO;
G_ui8CAN0TXMsgData[MO][5]= count*3 + MNO;
G_ui8CAN0TXMsgData[MO][6]= count*3 + MNO;
G_ui8CAN0TXMsgData[MO][7]= count*3 + MNO;
G_sCAN0TxMessage[MNO].ui32MsgID = 0x10000000 + count*3 + MNO;
G_sCAN0TxMessage[MNO].ui32MsgLen = 8;
CANMessageSet (CAN0_BASE、s_count、&g_sCAN0TxMessage[MNO]、MSG_OBJ_TYPE_TX);
}
while (1){
STATUS =(CANStatusGet (CAN0_BASE、CAN_STS_TXREQUEST)& 0xE0000000);
if (status =0){
中断;
}
}
}
}
(第2条
谢谢、此致、
Kuerbis