This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28335CAN接收中断

 对于28335CAN通信,接收采用查询方式,可以实现。

但采用接收中断方式,不能进入中断,通过查看寄存器,相应的CANRMP已置位,且CANGIF0相应位也置位,就是不进中断。还望各位大神帮忙解答!谢谢

其中中断配置如下:

ECanbRegs.CANMIM.all=0xffffffff;

ECanbRegs.CANMIL.all = 0;//邮箱中断产生在ECAN0INT中断线0
ECanbRegs.CANGIF0.all = 0xFFFFFFFF;//向其写1清除标志位
ECanbRegs.CANGIM.all=0x00000001;

在主程序中配置:

EALLOW;
PieVectTable.ECAN0INTB = &ECAN0INTBisr;
EDIS;

ECanb();

IER |= M_INT9;
PieCtrlRegs.PIEIER9.bit.INTx7=1;//开中断ECANBINT0

  • 请问相应的中断都打开了吗?
    还有一次中断都没进去吗?
  • 首先感谢您的回复!

    我用的是28335的canb,且中断采用的是中断线0(ECanbRegs.CANMIL.all = 0;//邮箱中断产生在ECAN0INT中断线0),查询PIE向量表,INT9.7是ECAN0INTB(IER |= M_INT9;      PieCtrlRegs.PIEIER9.bit.INTx7=1;//开中断ECANBINT0)。另外程序中也已开中断(ECanbRegs.CANMIM.all=0xffffffff;    ECanbRegs.CANGIM.all=0x00000001;),并清除相关标志位(ECanbRegs.CANGIF0.all = 0xFFFFFFFF;//向其写1清除标志位)。我这应该算相应中断都配置好了吧?

    在接收中断程序里,我设置一个变量自加,但是在线跑没监测到这个变量的变化,所以,一次中断也没进去。

    但是接收采用查询方式,同样也是设置变量自加,并读取数据,这些都可以实现。

    不知道是哪里出的问题?