关于nRF905收发程序问题

2019-07-16 05:07发布

单独的一个模块发送数据,另一个接收数据,是没有问题的。但是要是在同一个模块上先发送数据,再接收数据,返回来的数据就是错误的,已经求证过另一个模块发送过来的数据是正确的。是我在接收数据包的时候时间上有问题吗?求高手指点?这是主函数程序
int main(void)
{
  /************************
        发送一次收一次
  ***********************/
        
unsigned char i = 0;
        unsigned int checkright = 0;   //接收正确标志
__disable_interrupt();
               uart_init();
        
        __enable_interrupt();
SPI_Init();
nRF905_Init(TX_ADDRESS);
        nRF905_Init(RX_ADDRESS);


while(1)
        {
          if( rxBuf[0] == 0xaa)//串口接收一个正确数据包
          {
            if( rxBuf[1] == 0xbb)
            {

              for(i=0;i<16;i++)
                SendBuffer[i] = rxBuf[i];//将接收到数据写入发送寄存器
              _delay_ms(100);
              nRF905_SendPacket(RX_ADDRESS);//射频发送数据包            
              
              rxBuf[0] = 0x00;
              rxBuf[1] = 0x00;            
            }              
          }
          if(flag_send_over == 1)
          {
              nRF905_ReceivePacket();   //接收返回的数据包            
              
            if(flag_rece_over == 1)//接收完成后串口发送数据到PC机
            {
            
              flag_send_over = 0;
              
              for(i=0; i<ReceiveCount; i++)
                 txtBuf[i] = ReceiveBuffer[i];
               txCount =  ReceiveCount;
              
               beginSend();
              flag_rece_over = 0;         
            }            
          }
        }            
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。