求助各位大虾2292cpu的can滤波器设置程序,我自己写了个可是调试发现有问题,通不了,不知道哪里有问题,烦请大虾们出来指点一二。<br />void Init_CAN_AccFilter(void)<br />{<br /><br /> UINT32 i=0;<br /><br /> CANAFMR.Word |=1; //关闭验收滤波器<br /> CANAFMR.Word |= 1<<1; //使能修改相关寄存器<br /> CANAFMR.Word &= ~(1<<2); //禁止FullCAN模式<br /> CANSFF_sa.Bits.SADR_BIT = 8;<br /> /*独立标准帧标识符*/<br /> CANSFF_TAB(i).Bits.CANSFFID2 = 8;<br /> CANSFF_TAB(i).Bits.EN_BIT2 = 0;<br /> CANSFF_TAB(i).Bits.Num_BIT2 = 1;//使用的 CAN控制器号;<br /> CANSFF_TAB(i).Bits.CANSFFID1 = 16;<br /> CANSFF_TAB(i).Bits.EN_BIT1 = 0;<br /> CANSFF_TAB(i).Bits.Num_BIT1 = 1;//使用的 CAN控制器号;<br /> <br /> i++;<br /> /*组标准帧标识符*/<br /> CANSFF_GRP_TAB(i).Bits.CANSFFID2 = 8;<br /> CANSFF_GRP_TAB(i).Bits.EN_BIT2 = 0;<br /> CANSFF_GRP_TAB(i).Bits.Num_BIT2 = 1;//使用的 CAN控制器号;<br /> CANSFF_GRP_TAB(i).Bits.CANSFFID1 = 1;<br /> CANSFF_GRP_TAB(i).Bits.EN_BIT1 = 0;<br /> CANSFF_GRP_TAB(i).Bits.Num_BIT1 = 1;//使用的CAN控制器号;<br /><br /> i++;<br /><br /> /*独立扩展帧标识符*/<br /> CANEFF_TAB(i).Bits.CANEFFID1 = 8;<br /> CANEFF_TAB(i).Bits.Num_BIT = 1;//使用的CAN控制器号;<br /> i++;<br /> CANEFF_TAB(i).Bits.CANEFFID1 = 1;<br /> CANEFF_TAB(i).Bits.Num_BIT = 1;//使用的CAN控制器号;<br /> i++;<br /> <br /> /*组扩展帧标识符*/<br /> CANEFF_GRP_TAB(i).Bits.CANEFFID1 = 8;<br /> CANEFF_GRP_TAB(i).Bits.Num_BIT = 1;//使用的 CAN控制器号;<br /><br /> i++;<br /><br /> CANEFF_GRP_TAB(i).Bits.CANEFFID1 = 1;<br /> CANEFF_GRP_TAB(i).Bits.Num_BIT = 1;//使用的CAN控制器号;<br /><br /> /*各表格起始地址*/<br /> CANSFF_sa.Word = (0x00<<2);<br /> CANSFF_GRP_sa.Word = (0x01<<2);<br /> CANEFF_sa.Word =(0x02<<2);<br /> CANEFF_GRP_sa.Word = (0x04<<2);<br /> CANENDofTable.Word = (0x06<<2);<br /> <br /> CANAFMR.Word &= ~1; //打开验收滤波器<br /> CANAFMR.Word &= ~(1<<1); //禁止修改相关寄存器*/<br /><br />} |
|