//设置主机的报文标识符
MsgObj_zxz.ulMsgID = MSGOBJ_ID_ZXZ; //报文标识符
MsgObj_zxz.ulMsgIDMask = 0x0ff00; //报文滤波,0不过滤,CAN ID& CAN ID MASK= =帧ID
// 使能接收消息中断
MsgObj_zxz.ulFlags = (MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_EXTENDED_ID | MSG_OBJ_USE_ID_FILTER);
//设定数据的大小以及对应的变量
MsgObj_zxz.ulMsgLen = 2; //数据为2个字节
MsgObj_zxz.pucMsgData = msg_zxz; //使用变量msg_zxz
// 配置为接收消息对象
CANMessageSet(CAN0_BASE, MSGOBJ_NUM_ZXZ, &MsgObj_zxz, MSG_OBJ_TYPE_RX); //设置为接收
设置了报文过滤,但是目前是所有的报文都能接收到,什么原因,请解答,谢谢!
回复 楼主 fengzhang2002 的帖子
#define MSG_OBJ_USE_EXT_FILTER (0x00000020 | MSG_OBJ_USE_ID_FILTER)
****.ulFlags =
MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_EXTENDED_ID | MSG_OBJ_USE_ID_FILTER |
MSG_OBJ_USE_EXT_FILTER;
[ 本帖最后由 Study_Stellaris 于 2013-1-14 10:12 编辑 ]
回复 沙发 Study_Stellaris 的帖子
这样设已经试过了,还是不起作用
回复 4楼 benbending 的帖子
主要就是这两个寄存器的配置
CAN_O_IF1MSK1
CAN_O_IF1MSK2