文档介绍:/*******************************************************************---------------------Copyright(a)-----------------------------------作者:日期:修改记录:描述:STM32共有14组过滤器,用以对接收到的帧进行过滤。每组过滤器包括了2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。对于过滤器组,可以将其配置成屏蔽位模式,这样CAN_FxR0中保存的就是标识符匹配值,CAN_FxR1中保存的是屏蔽码,即CAN_FxR1中如果某一位为1,则CAN_FxR0中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器;CAN_FxR1中为0的位表示CAN_FxR0中的相应位可不必与收到的帧进行匹配。过滤器组还可以被配置成标识符列表模式,此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。例如:=0;//=CAN_FilterMode_IdMask;//=CAN_FilterScale_32bit;//=(0x0635<<5);//=0x0000;=0xffff;//=0xffff;=CAN_FIFO0;//=ENABLE;CAN_FilterInit(&CAN_FilterInitStructure);滤波器配置详细如下:1、对扩展数据帧进行过滤:(只接收扩展数据帧)=(((u32)slave_id<<3)&0xFFFF0000)>>16;=(((u32)slave_id<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;=0xFFFF;=0xFFFF;(注:标准帧数据帧、标准远程帧和扩展远程帧均被过滤)2、对扩展远程帧过滤:(只接收扩展远程帧)=(((u32)slave_id<<3)&0xFFFF0000)>>16;=(((u32)slave_id<<3)|CAN_ID_EXT|CAN_RTR_REMOTE)&0xFFFF;=0xFFFF;=0xFFFF;3、对标准远程帧过滤:(只接收标准远程帧)=(((u32)slave_id<<21)&0xffff0000)>>16;=(((u32)slave_id<<21)|CAN_ID_STD|CAN_RTR_REMOTE)&0xffff;=0xFFFF;=0xFFFF;4、对标准数据帧过滤:(只接收标准数据帧)CAN_FilterInitStr