<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>
<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>