笔记博文
过滤器(筛选器)配置方法的改进
改进由于给帧ID和过滤器ID赋值格式不统一的问题,对取标准/扩展帧ID和过滤器ID的赋值进行如下改进(最严格情况:掩码模式对所有位都要关心):
- 举例(标准帧),如程序可设置标准帧ID宏定义为:0xABC(取前11位,最后一位必须取0,不作为标准ID位)。但是,将其写入StdId时,需右移动一位,取出高11位作为有效位:
StdId = 0xABC>>1; //(取出11位)
CAN_FilterIdHigh= 0xABC<<4; //11个有效位移动到最左端(使32位过滤ID与11位标准帧的左对齐)
2. 举例(扩展帧):如程序可设置扩展帧ID宏定义为:0xABCDEF98(取前29位,最后3位必须取0,不作为标准ID位),但是,将其写入ExtId为时,需右移动3位,取出高29位作为有效位:
ExtId = 0xABCDEF98>>3;(取出29位)
CAN_FilterIdHigh = 0xABCDEF98>>16;
CAN_FilterIdLow = 0xABCDEF98&0x0000FFF8 ;//29个有效位移到最高位(使32位过滤ID与29位标准帧的左对齐)