论坛元老
 
- 积分
- 4460
- 金钱
- 4460
- 注册时间
- 2018-5-11
- 在线时间
- 931 小时
|
发表于 2018-6-3 20:31:31
|
显示全部楼层
我的发送程序是这样的:
void Send_Data_to_Slaver(void)
{
static u8 NoMasterCt=0; //发送失败计数
TX_Mode(); //切换到发射模式, 发送到地址0x31,即Slaver的接收通道1地址,同时本机的P0也置为该地址用于接收ACK
NRF2401_Tx_is_OK=0;
NRF2401_TimeOut=MaxDataSendTimeOut; //超时计时3秒
NRF2401_MAX_TX=0;
NRF24L01_TxNoWaiting(Ttmp_buf);
while(!NRF2401_Tx_is_OK)
{
if((!NRF2401_TimeOut) || NRF2401_MAX_TX ) //超时或达最大重发次数
{
// Show_Str(0,440,400,16,"MAX_RepeatTX_Num !! ",16,0); //此句调试显示用
if(++NoMasterCt>MaxConnectingTimes) //连续5次发送失败才标记对端已失效
{NoNRF2401Receiver=1;
// Show_Str(0,440,400,16,"NoNRF2401Receiver!!",16,0); //此句调试显示用
NoMasterCt=0;}
break; //失败停止等待
}
}
if(NRF2401_TimeOut && !NRF2401_MAX_TX) //未超时或未达最大重发次数, 失败计数清0
{
NoMasterCt=0;
// Show_Str(0,440,400,16,"Tx is OK!!! ",16,0); //此句调试显示用
}
NRF2401_Tx_is_OK=0;
//发送结束产生中断后, 将会及时切换回接收模式, 故下两句略去
NRF24L01_StatusReset();
RX_Mode(); //切换回正常接收状态
// LED0_TOGGLE; //LED0翻转状态一次
}
|
|