对于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
Seven Han:请问相应的中断都打开了吗?
还有一次中断都没进去吗?
对于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
user3476429:
回复 Seven Han:
首先感谢您的回复!
我用的是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清除标志位)。我这应该算相应中断都配置好了吧?
在接收中断程序里,我设置一个变量自加,但是在线跑没监测到这个变量的变化,所以,一次中断也没进去。
但是接收采用查询方式,同样也是设置变量自加,并读取数据,这些都可以实现。
不知道是哪里出的问题?
TI中文支持网



