51uwb.cn

 找回密码
 立即注册
查看: 3639|回复: 2
打印 上一主题 下一主题

代码中的一个while循环(轮询接收帧)理解不了,望各位前辈指教

[复制链接]

3

主题

15

帖子

40

积分

新手上路

Rank: 1

积分
40
跳转到指定楼层
楼主
发表于 2020-7-19 15:23:40 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
      while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))
      { };

这个while循环理解不了,括号里面会出现1或0吗?


下面是这个函数原型  
#define SYS_STATUS_ID           0x0F           
#definedwt_read32bitreg(x)        dwt_read32bitoffsetreg(x,0)
uint32dwt_read32bitoffsetreg(int regFileID,int regOffset)
{
    uint32 regval = DWT_ERROR ;
    int    j ;
    uint8  buffer[4] ;
    int result =dwt_readfromdevice(regFileID,regOffset,4,buffer); // Read 4 bytes (32-bits)register into buffer
    if(result == DWT_SUCCESS)
    {
        for (j = 3 ; j >= 0 ; j --)
        {
            regval = (regval << 8) +buffer[j] ;
        }
    }
    return regval ;
}

回复

使用道具 举报

3

主题

15

帖子

40

积分

新手上路

Rank: 1

积分
40
沙发
 楼主| 发表于 2020-7-21 09:41:43 | 显示全部楼层
uwb 发表于 2020-7-19 16:01
这个表达式,你得分开解读,
!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | S ...

  刚开始不明白什么是掩码,查了一下,加上你的讲解,现在理解了这个语句
非常感谢  
回复

使用道具 举报

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

本版积分规则

bphero Inc.  

GMT+8, 2024-5-13 08:22 , Processed in 0.017665 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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