爱学习的小尤 2023-06-16 16:40 采纳率: 50%
浏览 9

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消息溢出中断 */
    }
}

```

  • 写回答

2条回答 默认 最新

  • 於黾 2023-06-16 16:50
    关注

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

    评论

报告相同问题?

问题事件

  • 创建了问题 6月16日

悬赏问题

  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术