CAN接收中断的疑惑和死循环

2019-08-14 00:34发布

这几天在调can,一遍跟着原子哥的例程学习,一边对着手册看,调试到了中断接收的时候出现了一些问题和疑惑,还请大家指教?
疑惑1、为什么原子哥写的接收中断里不做中断类型判断了?也不做清除中断标志位的操作了?
问题1、我的中断程序如下,可是却一直死在里面不断的打印3,我使用的是周立功的调试器,调试器都不发数据了,还在打印,很诡异,在论坛上查找,发现有一个人和我遇到的情况一样,却没有解决,希望大家帮帮忙:
void USB_LP_CAN1_RX0_IRQHandler()
{
        if(CAN_GetITStatus(CAN1,CAN_IT_FMP0)==SET)
        {
                qIrq_flag=1;
                printf("3");
                CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);
        }
        if(CAN_GetITStatus(CAN1,CAN_IT_FF0)==SET)
        {
                qIrq_flag=2;
                printf("3");
                CAN_ClearITPendingBit(CAN1,CAN_IT_FF0);
        }
        if(CAN_GetITStatus(CAN1,CAN_IT_FOV0)==SET)
        {
                qIrq_flag=4;
                printf("4");
                CAN_ClearITPendingBit(CAN1,CAN_IT_FOV0);
        }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。