nRF24L01最好不要用循环读取缓冲区的办法去判断有没有数据。
最好还是用IRQ引脚
用外部中断读取数据。
而且设置接收模式1次就可以了 不需要一直设置。因为很有可能在设置过程中 对方发数据过来然后这边还在设置阶段导致根本接不到数据。或者接收错误。
最好的办法是
SetRX_Mode();//设置接收模式
while(1)//主循环
{
if(!nRF24L01_IRQ)//等待接收中断
{
if(nRF24L01_RxPacket(RxBuf))//读取一次数据包
{
for(b=0;b<2;b++)
{
N=RxBuf[0];
senddata(TN); //向串口发送温度的整数部分
TD=RxBuf[1];
senddata(TD); //向串口发送温度的小数部分
}
}
}
}
为什么要发送两遍呢?
nRF24L01_RxPacket(RxBuf)这个子程序可能有点问题,似乎一直为真(非0),所以总是不断的发送数据给PC。