单独的一个模块发送数据,另一个接收数据,是没有问题的。但是要是在同一个模块上先发送数据,再接收数据,返回来的数据就是错误的,已经求证过另一个模块发送过来的数据是正确的。是我在接收数据包的时候时间上有问题吗?求高手指点?这是主函数程序
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;
}
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>