主题中讨论的其他器件:HALCOGEN
您好!
我正在尝试实现 CAN 消息中断。 我有两 个 Hercules RM57Lx 套件。 我已经成功在这两个器件上实现了 CAN 消息。 我使用 HALCOGEN 创建了以下 CAN 设置
一个套件充当 TX、另一个套件充当 RX。 但是、我遇到了基于中断的通信问题。 问题是我能够获得 针对 cannMESSAGE_BOX1的中断、但是当我将 cannMSSAGE_BOX2消息从 TX 控制器发送到 RX 时、我无法获得中断。 这两条消息都被发送到 RX 控制 器、RX 控制器可以读取它们、但仅 CANMESSAGE_BOX1控制器会发生中断。 还有该函数
canIsRxMessageArtrived (canREG1、canMESSAGE_BOX1)
适用于 canMESSAGE_BOX1、 控制器可以了解 canMESSAGE_BOX1中是否存在消息、但当我调用函 数 canIsRxMessageArrived (canREG1、canMESSAGE_BOX2)时、它始终返回 false。 但是、如果我忽略它、只需调用
canGetData (canREG1、canMESSAGE_BOX2、rxData);
函数若要读取 MessagBox2中的数据、它可以读取我从 TX 控制器发送的数据、效果非常好。 代码如下所示。 我在这里缺少什么?
我的 TX 代码主文件是
int main (空)
{
/*用户代码开始(3)*/
unsigned long int 索引;
canInit();
while (1)
{
canTransmit (canREG1、canMESSAGE_BOX1、(const uint8 *)&txData[0]);
对于(索引= 0;索引< 4967000;索引++)
{}
canTransmit (canREG1、canMESSAGE_BOX2、(const uint8 *)&LEDOn[0]);
对于(索引= 0;索引< 4967000;索引++)
{}
}
}
RX 代码:
int main (空)
{
/*用户代码开始(3)*/
canInit();
sciInit();
vimInit();
_enable_interrupt_();
sciSend (sciREG1、15、"Prgram Started\r");
while (1)
{
// while (!canIsRxMessageArrived (canREG1、canMESSAGE_BOX1));
while (isCANInterruptOccalced = 0);//
if (canIsRxMessageArrived (canREG1、canMESSAGE_BOX1)== true)
{
canGetData (canREG1、canMESSAGE_BOX1、rxData);
sciSend (sciREG1、D_size、&rxData[0]);
}
if (canIsRxMessageArrived (canREG1、canMESSAGE_BOX2)== true)
{
canGetData (canREG1、canMESSAGE_BOX2、rxData);
sciSend (sciREG1、D_size、&rxData[0]);
}
isCANInterruptOccalced = 0;
}
/*用户代码结束*/
返回0;
}
