在线时间28 小时
UID3141909
注册时间2015-7-6
NXP金币0
该用户从未签到
注册会员

- 积分
- 139
- 最后登录
- 2016-9-29
|
请教求助一下,我现在用的是K64的板子,在调试CAN的时候碰到一些问题就是当我接收一个包的时候是没有问题的,但是一旦对方连续发送两个包,就会有问题,代码如下
一次收8个以内的字节就没有问题,但是如果收8个以上的字节就等于拆成两个包发过来以后
后面就会连CAN0_ORed_Message_buffer_IRQHandler()都进不去了
请问下这是什么问题啊?是不是有什么标志位需要清一下???
void CAN0_ORed_Message_buffer_IRQHandler(void)
{
FLEXCAN_DRV_IRQHandler(0);
flag_canrec = 1;
}
result = FLEXCAN_DRV_RxFifo(flexcanInstance, &rx_fifo);
while(1){
//FLEXCAN_HAL_ClearErrIntStatusFlag
if(1 == flag_canrec){
canresult = FLEXCAN_DRV_GetReceiveStatus(flexcanInstance);
if (kStatus_FLEXCAN_Success == canresult){
result = FLEXCAN_DRV_RxFifo(flexcanInstance, &rx_fifo);
if (result != kStatus_FLEXCAN_Success){
PRINTF("\r\nFlexCAN RX receive failed. result: 0x%lx", result);
}
temp = ((rx_fifo.cs) >> 16) & 0xF;
if(0 == rx_fifo.data[0]){
ican_rec_commond(rx_fifo.msgId,rx_fifo.data,temp);
}
else{
if(endflag&0xC0 == 0xC0){
}
else
{
}
}
}
flag_canrec = 0;
canresult = 1;
}
_time_delay(20);
|
|