设置接收过滤器
1. 标准 ID,掩码模式
仅接收特定 ID 或按掩码接收多个 ID。
CAN_SetRxFilter(CAN0, 0, CAN_STD_ID, 0x100, 0x700);
0:过滤器编号。
CAN_STD_ID:标准 ID。
0x100:接收的目标 ID。
0x700:掩码,0 表示对应位必须匹配,1 表示忽略该位。
示例
ID:0x100
掩码:0x700
接收的 ID 范围:0x100 到 0x1FF
2. 扩展 ID,掩码模式
CAN_SetRxFilter(CAN0, 1, CAN_EXT_ID, 0x18FF50E5, 0x1FFFFFFF);
0x18FF50E5:目标扩展 ID。
0x1FFFFFFF:掩码,1 表示忽略,0 表示必须匹配。
3. 列表模式(仅匹配特定 ID)
如果 MCU 支持,可以手动添加多个特定的 ID 进行匹配。
CAN_SetRxFilter(CAN0, 0, CAN_STD_ID, 0x123, 0x7FF); // ID 0x123
CAN_SetRxFilter(CAN0, 1, CAN_STD_ID, 0x456, 0x7FF); // ID 0x456
步骤 3:接收数据
CAN_Receive(CAN0, &rxMsg);
if(rxMsg.Id == 0x100){
// 处理接收到的数据
}
|