while(1)
{
while(NRF24L01_Check())//检测不到24L01//返回值为零:成功
{
LCD_ShowString(60,130,"24L01 Check Failed!");
Delay_ms(500);
LCD_ShowString(60,130,"lease Check! ");
Delay_ms(500);
LED0=!LED0;//DS0闪烁
}
LCD_ShowString(60,130,"24L01 Ready!");
while(1)//在该部分确定进入哪个模式!
{
key=KEY_Scan();
if(key==1)
{
mode=0;
break;
}else if(key==2)
{
mode=1;
break;
}
LCD_ShowString(10,150,"KEY0:RX_Mode KEY1:TX_Mode");
Delay_us(5);
}
LCD_Fill(10,150,240,166,RED);//清空上面的显示
OINT_COLOR=BLUE;//设置字体为蓝色
if(mode==0)//RX模式
{
LCD_ShowString(60,150,"NRF24L01 RX_Mode");
LCD_ShowString(60,170,"Received DATA:");
RX_Mode();//初始化NRF24L01到RX模式
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
{
tmp_buf[32]=0;//加入字符串结束符
LCD_ShowString(0,190,tmp_buf);
}
else
Delay_ms(900);
};
}
else//TX模式
{
LCD_ShowString(60,150,"NRF24L01 TX_Mode");
TX_Mode();//初始化NRF24L01到TX模式
while(1)
{
key=KEY_Scan();
if(key==1)
{
key=0;
for(i=0;i<34;i++)
{
tmp_buf=table0;
}
}
else if(key==2)
{
key=0;
for(i=0;i<34;i++)
{
tmp_buf=table1;
}
}
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)//检测是否发送完成,一旦发送完成就显示出来
{
LCD_ShowString(60,170,"Sended DATA:");
LCD_ShowString(0,190,tmp_buf);
Delay_ms(100);
}else
{
LCD_ShowString(60,170,"Send Failed ");
LCD_Fill(0,188,240,218,RED);//清空上面的显示
};
};
}
}
这里面有四个while循环,我想问下就是如果把第二个while循环检测无线模块是否安装好去除的话,也就是不要检测那一步了,为什么无线就发送和接收就不能实现了呢?还有就是最后不去除检测的话,发送模式里面的蓝色代码会在send failed和sended data之间跳变,有什么办法让他一直保持在NRF24L01_TxPacket(tmp_buf)==TX_OK这里呢?求高手指教???