makeflyeasy 发表于 2016-12-16 16:07:38

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

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

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

这么设置是为什么呢?请大神帮忙解答下,谢谢了!!!

leafstamen 发表于 2016-12-16 18:33:26

打开手册看寄存器去。

yu2008 发表于 2016-12-16 21:34:12

标准ID在高位

youmu 发表于 2016-12-16 21:37:42

左对齐。。

richyhuang 发表于 2016-12-19 10:07:10

這個基本就是軟件將就硬件了,

makeflyeasy 发表于 2016-12-20 16:24:42

youmu 发表于 2016-12-16 21:37
左对齐。。

哦,好的,谢谢。
页: [1]
查看完整版本: 请教一个关于CAN总线标准ID和扩展ID的问题