检测单个位状态的技巧

<p></p>
<p></p>
<p></p>
<p><textarea cols="50" rows="15" name="code" class="c-sharp">static RET_CODE huaya_h2_nand_check_wp(void)
{
UINT32 status;
#ifdef NAND_H2_SIMULATE
return 0;
#endif
/* read ready/busy register */
status = NAND_H2_RD_UINT32(reg_base, NAND_H2_REG_OFFSET_STATUS);

return (status & NAND_STATUS_WP) ? 0 : 1;
}</textarea></p>
<p></p>
<p>最后在返回的时候,使用了问号表达式,NAND_STATUS_WP被宏定义成0x80(即10000000)</p>
<p>status&0x80 相当于只检测status的第八位,如果第八位是1,return 0;如果第八位是0,return 1。</p>
<p>好处:</p>
<p> 由于寄存器的其他位是不确定的,这样,屏蔽了其他位的干扰,而且程序看起来很简练!试想如果用if(status==?) 将会多麻烦。</p>

<p></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值