找回密码
 立即注册
查看: 776|回复: 4

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

[复制链接]

1

主题

3

回帖

13

积分

新手上路

积分
13
发表于 2023-5-11 23:53:52 来自手机 | 显示全部楼层 |阅读模式
void CanReadFifo(CAN_DstaDef *CAN)函数 读取的RX_BUG0加上RX_index++&3是什么意思
2023-05-11_23.53.10.jpg
回复

使用道具 举报 送花

1

主题

3

回帖

13

积分

新手上路

积分
13
发表于 2023-5-12 08:48:04 来自手机 | 显示全部楼层
首次计算RX_BUF0地址就加上了1好像不对,我的理解是RX_index=0;第一次运行后(RX_index++&3)结果为1😓
回复 支持 反对

使用道具 举报 送花

1

主题

3

回帖

13

积分

新手上路

积分
13
发表于 2023-5-12 09:01:11 来自手机 | 显示全部楼层
从整个函数的理解是RX_index++&3计算结果应是0123再到0123的循环,但首次计算结果什么是0呢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-5-12 09:02:05 | 显示全部楼层
(RX_index++&3)是使用RX_index自增前的数值跟3取与,也就是取RX_index的低2位数值(0~3)
展开来就是:
pdat[0] = CanReadReg((u8)(RX_BUF0 + (RX_Index&3)));
RX_index++;
回复 支持 反对

使用道具 举报 送花

1

主题

3

回帖

13

积分

新手上路

积分
13
发表于 2023-5-12 09:05:34 来自手机 | 显示全部楼层
pdat[0] = CanReadReg((u8)(RX_BUF0 + (RX_Index&3)));
RX_index++;看这就明白了,基础不牢呀,谢谢你😊
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 04:13 , Processed in 0.132901 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表