各位大佬好,我想请问一个问题。
1.,如果图一绿色部分不返回0的话,意味着报文已经进入FIFO0邮箱,就意味着,报文是正确的,并且已经通过了过滤器,是这么理解吧。
2.,成功接收之后,进入图二的CAN_Receive函数。
3.我点开CAN_Receive函数之后,跳到这里,
图三中的RxMessage->IDE = (uint8_t)0x04 & CANx->sFIFOMailBox[FIFONumber].RIR,检测是标准格式还是拓展格式,在这里检测有啥意义么?
还有,RxMessage->StdId = (uint32_t)0x000007FF & (CANx->sFIFOMailBox[FIFONumber].RIR >> 21);令接收到的ID等于邮箱中的报文ID有什么意义呢?
既然报文已经能通过筛选器进入到了邮箱,不就意味着ID已经在筛选器筛选过了么?我只需要在CAN_Receive读取数据不就可以了么?这是我疑惑的地方,希望大神可以帮我解答!十分感激! |