CAN接收中断产生多次回复

下面是我的中断接收函数,回调函数中会根据收到的信息回复一断信息,为什么收到一条信息后会不停地回复,不应该回复一次吗?


```c

void CEC_CAN_IRQHandler(void)
{
    if(CAN_GetITStatus(CAN,CAN_IT_FMP0) == SET)
    {
        /* CAN 邮箱0消息挂号中断 */
        CAN_Receive(CAN,0,&CanRxMsgBuff);
        CanRxStatus = 1;
        if(can_rx_callback != 0)
        {
            can_rx_callback(CanRxMsgBuff.StdId,CanRxMsgBuff.Data,CanRxMsgBuff.DLC);
        }
        //CAN_ClearITPendingBit(CAN,CAN_IT_FMP0);
    }
    
    if(CAN_GetITStatus(CAN,CAN_IT_TME) == SET)
    {
        CAN_ClearITPendingBit(CAN,CAN_IT_TME);
        /* CAN 发送邮箱空中断 */
        
        CanTxStatus = 0;
        if(can_rx_callback != 0)
        {
            can_rx_callback(CanRxMsgBuff.StdId,CanRxMsgBuff.Data,CanRxMsgBuff.DLC);
        }
    }
    
    if(CAN_GetITStatus(CAN,CAN_IT_FF0) == SET)
    {
        CAN_ClearITPendingBit(CAN,CAN_IT_FF0);
        /* CAN 邮箱0消息满中断 */        
    }
    
    if(CAN_GetITStatus(CAN,CAN_IT_FOV0) == SET)
    {
        CAN_ClearITPendingBit(CAN,CAN_IT_FOV0);
        /* CAN 邮箱0消息溢出中断 */
    }
}

```

每收到一个字节都会引发中断,你不要以为中断的时候就是整个数据都完整了,芯片哪知道数据完整不完整,需要你自己写代码判断是不是收全了