This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我正在尝试提高我的 canbus 知识、但我对 canbus 对象编号有疑问。
我只想使用0x180 - 0x18F、0x280 - 0x28F、0x380 - 0x38F、0x480 - 0x48F
我的问题是:
对于0x180、只进行一次中断调用、第二次从不进行中断调用
对于0x280、只进行一次中断调用、第二次从不进行中断调用
对于0x380、只进行一次中断调用、第二次从不进行中断调用
对于每个0x480、始终中断调用、直到出现0x48F 消息。
为什么我的代码如此操作?
提前感谢
我的对象标识符代码是
setCANMSG.ui32MsgID = 0x180; setCANMSG.ui32MsgIDMask = 0xFF0; setCANMSG.ui32Flags=(MSG_OBJ_RX_INT_ENABLE|MSG_OBJE_ID_FILTER); setCANMSG.ui32MsgLen = 8; ROM_CANMessageSet (base_CANBUS、5、&setCANMSG、MSG_OBJ_TYPE_RX); setCANMSG.ui32MsgID = 0x280; ROM_CANMessageSet (base_CANBUS、6、&setCANMSG、MSG_OBJ_TYPE_RX); setCANMSG.ui32MsgID = 0x380; ROM_CANMessageSet (base_CANBUS、7、&setCANMSG、MSG_OBJ_TYPE_RX); setCANMSG.ui32MsgID = 0x480; ROM_CANMessageSet (base_CANBUS、8、&setCANMSG、MSG_OBJ_TYPE_RX);
我的中断处理程序代码如下所示;
tCANMsgObject canIntObj; uint8_t data[8]; CANStatus = CANIntStatus (BASE_CANBUS、CAN_INT_STS_CAUST); if (canStatus = CAN_INT_INTID_STATUS) { ROM_CANEnable (BASE_CANBUS); CANStatus = ROM_CANStatusGet (BASE_CANBUS、CAN_STS_CONTROL); CANIntClear (BASE_CANBUS、CANStatus); } 其他 { canIntObj.pui8MsgData=data; objStatus = CANIntStatus (base_CANBUS、CAN_INT_STS_object); ROM_CANMessageGet (base_CANBUS、canStatus、&canIntObj、0); CANIntClear (BASE_CANBUS、CANStatus); CheckCanControl (&canIntObj); }