请教一个关于CAN总线标准ID和扩展ID的问题

2020-02-11 09:53发布

请教一下在CAN总线里面,标准ID去低11位的stdid之后,为什么还有个向左移动21位的设置呢?在扩展ID里面取低32位之后,也是向左移动3位的设置?
assert_param(IS_CAN_STDID(TxMessage->StdId));  
CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->StdId << 21) |
                                                  TxMessage->RTR);

assert_param(IS_CAN_EXTID(TxMessage->ExtId));
CANx->sTxMailBox[transmit_mailbox].TIR |= ((TxMessage->ExtId << 3) |
                                                  TxMessage->IDE |
                                                  TxMessage->RTR);

这么设置是为什么呢?请大神帮忙解答下,谢谢了!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。