关于do{}while()的一点疑问
时间:10-02
整理:3721RD
点击:
在做stm32SPI 通信时 读取SST25VF016B 的状态寄存器
do
{
读SST25VF016B状态寄存器
}while(state&0x01);
读SST25VF016B内擦除后的数据
与
do
{
读SST25VF016B状态寄存器
}while(state==0x01);
读SST25VF016B内擦除后的数据
得到不同的结果,前者不对,后者正确。请高手帮忙解答。
do
{
读SST25VF016B状态寄存器
}while(state&0x01);
读SST25VF016B内擦除后的数据
与
do
{
读SST25VF016B状态寄存器
}while(state==0x01);
读SST25VF016B内擦除后的数据
得到不同的结果,前者不对,后者正确。请高手帮忙解答。
自己顶 表沉。
改成这样试一下呢while(state);
while(state&0x01)表示,只检查state最后一位是0还是1,state的其他位被忽略。
while(state==0x01)表示state为0x01,不仅最后一位必须为1,其他位还必须为0。
看看你器件的SPI操作,然后自己确定一下。
另外:再仔细看看C语言。
如果我只是关注最低位呢?这样写有什么差别么?请教了。
那就使用 state&0x01
同意楼上, 要是你还是错误的话,估计是你没有自己看 SST25VF016B 数据手册