各位:
现在要设置can过滤器只接收ID 0x400 ~ ID 0x415 共22个id的标准数据帧数据
麻烦问下要如何设置can的过滤器?
现在我只研究出了设置只接收一个id的数据的过滤器设置方式,如下:
[mw_shl_code=c,true]CAN_FilterInitTypeDef CAN_FilterInitStructure;
//配置过滤器
CAN_FilterInitStructure.CAN_FilterNumber=0; //过滤器0
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位
CAN_FilterInitStructure.CAN_FilterIdHigh=(((u32)0x415<<21)&0xffff0000)>>16; //32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x415<<21)|CAN_ID_STD|CAN_RTR_DATA)&0xffff;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化[/mw_shl_code]
麻烦各位帮忙解答下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
正在研究使用标识符列表的方式解决,欢迎一起讨论
一周热门 更多>