求助 代码不懂 来个大侠帮帮忙
//********Poll CAN Comm: if message pending, handle it.//CRITICAL: currently overrunning from the host is prohibited
if (nBLDC_status & (1<<CANMsgTxPending))
ProcessCANTxMsg();
else
{
lMainInt32R0 = ECanaRegs.CANRMP.all & (1<<CANMailBoxRv_set);
if (lMainInt32R0 != 0) //if non-zero, there is a pending message
{
ECanaRegs.CANRMP.all = lMainInt32R0; //clear the RMP bit
ProcessCANRvMsg();
nBLDC_status |= (1<<CANMsgTxPending);
}
}
不懂nBLDC_status & (1<<CANMsgTxPending)为啥左移 nBLDC_status是一个字节或者字,nBLDC_status & (1<<CANMsgTxPending) 用来判断其中的一个bit而已,不是这么理解吗? CANMsgTxPending 是个宏定义.
1<<CANMsgTxPending 是寄存器中 CANMsgTxPending 对应的功能位. 左移只能说明是在判断次高位 此标志位是0是1 airwill 发表于 2013-4-7 14:08 static/image/common/back.gif
CANMsgTxPending 是个宏定义.
1
正解 谢谢各位 我明白了
比如CANMsgTxPending=4,那么1左移4位为10000,判断nBLDC_status的第四位是1是0 dulala 发表于 2013-4-8 08:35 static/image/common/back.gif
谢谢各位 我明白了
比如CANMsgTxPending=4,那么1左移4位为10000,判断nBLDC_status的第四位是1是0 ...
问题解决就好
页:
[1]