40245019 发表于 2023-5-11 23:53:52

void CanReadFifo(CAN_DstaDef *CAN)函数 读取的RX_BUG0加上RX_index++&3是什么意思

void CanReadFifo(CAN_DstaDef *CAN)函数 读取的RX_BUG0加上RX_index++&3是什么意思

40245019 发表于 2023-5-12 08:48:04

首次计算RX_BUF0地址就加上了1好像不对,我的理解是RX_index=0;第一次运行后(RX_index++&3)结果为1😓

40245019 发表于 2023-5-12 09:01:11

从整个函数的理解是RX_index++&3计算结果应是0123再到0123的循环,但首次计算结果什么是0呢

乘风飞扬 发表于 2023-5-12 09:02:05

(RX_index++&3)是使用RX_index自增前的数值跟3取与,也就是取RX_index的低2位数值(0~3)
展开来就是:
pdat = CanReadReg((u8)(RX_BUF0 + (RX_Index&3)));
RX_index++;

40245019 发表于 2023-5-12 09:05:34

pdat = CanReadReg((u8)(RX_BUF0 + (RX_Index&3)));
RX_index++;看这就明白了,基础不牢呀,谢谢你😊
页: [1]
查看完整版本: void CanReadFifo(CAN_DstaDef *CAN)函数 读取的RX_BUG0加上RX_index++&3是什么意思