下面是我的中断接收函数,回调函数中会根据收到的信息回复一断信息,为什么收到一条信息后会不停地回复,不应该回复一次吗?
```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消息溢出中断 */
}
}
```
每收到一个字节都会引发中断,你不要以为中断的时候就是整个数据都完整了,芯片哪知道数据完整不完整,需要你自己写代码判断是不是收全了