找回密码
 立即注册
查看: 485|回复: 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呢
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 141 天

    [LV.7]常住居民III

    27

    主题

    1338

    回帖

    4168

    积分

    论坛元老

    积分
    4168
    发表于 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, 2024-5-15 20:25 , Processed in 0.060118 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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