以下是我编的一段滤波器设置的程序:
void CAN_AccFilter_Init(void)
{
LPC_CANAF->AFMR = 0x01; //关闭验收滤波器
//LPC_CANAF->AFMR |= 1<<1; //使能修改相关寄存器
// LPC_CANAF->AFMR &= ~(1<<2); //禁止FullCAN模式
SFFIndvCanTab.UpId= 0x00012345;
SFFIndvCanTab.UpRsv=0x00;
SFFIndvCanTab.UpDis= 0x00;
SFFIndvCanTab.UpCh = 0x01;
SFFIndvCanTab.LoId = 0x01;
SFFIndvCanTab.LoRsv = 0x00;
SFFIndvCanTab.LoDis= 0x00 ;
SFFIndvCanTab.LoCh= 0x01;
/*各表格起始地址*/
LPC_CANAF->SFF_sa =0;
LPC_CANAF->SFF_GRP_sa = 0x00000004;
LPC_CANAF->EFF_sa =0x00000004;
LPC_CANAF->EFF_GRP_sa = 0x00000004;
LPC_CANAF->ENDofTable =0x00000004;
LPC_CANAF-> AFMR =0; //打开验收滤波器
LPC_CANAF->AFMR &= ~(1<<1); //禁止修改相关寄存器
}
// FullCAN 标准标识符表格或独立标准标识符表格cell内容类型定义:
typedef struct tag_AF_SFF_CELL //
{
uint32_t UpId :11; //11bits ID1
uint32_t UpRsv :1; //保留
uint32_t UpDis :1; //禁能位
uint32_t UpCh :3; //CAN控制器号
uint32_t LoId :11; //11bitsID0
uint32_t LoRsv :1; //保留
uint32_t LoDis :1; //禁能位
uint32_t LoCh :3; //CAN控制器号
}_AF_SFF_CELL,*P_AF_SFF_CELL;
发现存在问题,哪位高手指点下?谢谢
此帖出自
小平头技术问答
一周热门 更多>