在multi_rx.c例程里面有这样一段代码
sCANMessage.ulMsgID = 0x1001; // CAN msg ID
sCANMessage.ulMsgIDMask = 0xfffff; // mask, all 20 bits must match
sCANMessage.ulFlags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER |
MSG_OBJ_EXTENDED_ID;
sCANMessage.ulMsgLen = 8; // allow up to 8 bytes
应该是29位的扩展模式
但是ulMsgIDMask 为啥是写成20bit呢?
是因为这段代码中的ulMsgID 小于20位才这么写的还是因为什么其他原因
谢谢
此帖出自
小平头技术问答
ulMsgIDMask的每一位都对应的标识符ID
标识符ID总共有29位 (扩展的)
所以标识符屏蔽码 应该也有29bit才对啊
CANIF2MSK2 CANIF2MSK1 就是这两个寄存器
mask, all 20 bits must match
他这么写目的是突出这20bit必须匹配,应该没有其它含义.
请再仔细了解一下.
Fred
一周热门 更多>