天线|RF射频
直播中

吴思锋

7年用户 175经验值
私信 关注
[问答]

nrf24l01程序为什么无线发送和接收就不能实现呢?

         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这里呢?求高手指教???

回帖(2)

赵晨

2020-5-4 11:33:05

第二个while,去掉确实应该无问题才对.

你想要停留在红色代码那里,把if改为while吧.然后等于改为不等于.
举报

王强

2020-5-4 11:49:38

我试试。先谢谢哈
举报

更多回帖

发帖
×
20
完善资料,
赚取积分