有个疑问想请教一下,该单片机的CAN中断的产生是不是不依赖于接收滤波的结果?就是说无论报文是否符合该节点的滤波要求,CAN中断都会发生?非常感谢您的帮助
/************************************************************************ ** 函数名称:ISRname ** 函数功能:CAN中断服务程序 ** 输入参数: ** 输出参数: *************************************************************************/ void ISRname(void) interrupt 19 { char SFRPAGE_SAVE = SFRPAGE; SFRPAGE = CAN0_PAGE; status = CAN0STA; if((status & 0x10) != 0) { //Rxok位为1,则是由于接收引起的中断 CAN0STA = (CAN0STA & 0xef) | 0x07; //复位Txok,设置LEC无变化 /*read message number from CAN INTREG*/ RX_FLAG = 1; } if((status & 0x08) != 0) { //Txok位为1,则是由于发送引起的中断 CAN0STA = (CAN0STA & 0xf7) | 0x07; //复位Txok,设置LEC无变化 TX_FLAG = 0; //发送完成 } if(((status & 0x07) != 0) && ((status & 0x07) != 7)) { //错误中断,改变LEC CAN0STA = CAN0STA | 0x07; //设置LEC无变化 } SFRPAGE = SFRPAGE_SAVE; }
这是CAN中断服务子程序,我发现只要收到数据就进入中断,不管接收滤波什么要求,
|