工具/软件:
您好、
我正要在两个 f28p65x LaunchPad 之间进行通信。我采用 can_ex5_transmit_receive 示例、然后在 调试模式下刷写一个板中的 Rx 和另一个板中的 TX 当 我尝试发送数据时、它将进入中断函数的无限循环(使用打印检查此情况)。它将进入第一个(如果情况为-> if (status = can_int0id_status)、它添加了以下引用函数
__中断无效
canaISR (void)
{
uint32_t 状态;
//
//读取 CAN-B 中断状态以查找中断原因
//
status = can_getInterruptCause (cana_base);
printf ("can_getInterruptCause =%lu\n"、status);
//
//如果原因是控制器状态中断、则获取状态
//
IF (STATUS == CAN_INT_INT0ID_STATUS)
{
//
//读取控制器状态。 这将返回状态字段
//可以指示各种错误的错误位。 错误处理
//为简单起见、此示例中未执行。 请参阅
// API 文档、了解有关错误状态位的详细信息。
//读取此状态的行为将清除中断。
//
status = CAN_getStatus (Cana_base);
printf ("status =%lu \n"、status);
//
//检查是否发生错误。
//
ifdef 传输
if (((status &~(CAN_STATUS_TXOK))!= CAN_STATUS_LEC_MSK)&&
((status &~(CAN_STATUS_TXOK)!= CAN_STATUS_LEC_NONE)))
#else
if (((status &~(CAN_STATUS_RXOK))!= CAN_STATUS_LEC_MSK)&&
((status &~(CAN_STATUS_RXOK)!= CAN_STATUS_LEC_NONE)))
#endif
{
//
//设置一个标志以指示可能发生了一些错误。
//
errorFlag = 1;
}
}
硬件连接:
JP9在两个电路板上均短接、CAN_H 短接至 CAN_H、CAN_L 短接至 CAN_L、GND 短接至 GND
注意:can_getInterruptCause = 32768、 status = 32768此打印稿 将 连续打印
请让我知道我在这里犯了什么错误