本帖最后由 cojone 于 2010-1-4 14:48 编辑
如果我要用stm32 的CAN 接收指定帧ID(如0x0101),要怎么配置CAN过滤器呀。我配置成如下:
/* CAN filter init */
CAN_FilterInitStructure.CAN_FilterNumber=0;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList; //配置为标识符列表模式
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh=0; //(((u32)0x0101<<3)&0xFFFF0000)>>16;
CAN_FilterInitStructure.CAN_FilterIdLow=0x0101; //(((u32)0x0101<<3)&0xFFFF0000)>>16
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0; //0xffff
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0; //0xffff
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
如果过滤模式改为CAN_FilterMode_IdMask标识符屏蔽位模式,不能过滤其他的帧,但CAN_FilterMode_IdList模式下,连指定的帧也过滤了。
配置成网友所说的 (注释那样的配置) 也不行的,是不是还有其他地方需要配置,请高手指点。。。。。 |