初中生
最后登录1970-1-1
在线时间 小时
注册时间2015-5-6
|
基于STM32单片机用NFR24L01发射数据和接收数据不一样求大神解决;程序如下:
由于字数限制,前面的配置就不写了
int main(void)
{
u8 tmp_buf[33],tmp[33];
if(mode==0)//RX模式
{
LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
LCD_ShowString(60,170,200,16,16,"Received DATA:");
NRF24L01_RX_Mode();
while(1)
{
tmp[0]=((int16_t)tmp_buf[0]<<8)+tmp_buf[1];
tmp[1]=((int16_t)tmp_buf[2]<<8)+tmp_buf[3];
tmp[2]=((int16_t)tmp_buf[4]<<8)+tmp_buf[5];
if(NRF24L01_RxPacket(tmp_buf)==0)//ò»μ©½óêÕμ½DÅÏ¢,ÔòÏÔê¾3öà′.
{
printf(" 加速度%8d\n",tmp[1]);
printf(" 加速度%8d\n",tmp[2]);
printf(" 陀螺仪 %8d\n",tmp[0]);
tmp[32]=0;//加入结束符
LCD_ShowString(0,190,239,32,16,tmp);
}else delay_us(100);
t++;
if(t==10000)//灯延时
{
t=0;
LED0=!LED0;
}
};
}else//TX模式
{
LCD_ShowString(60,150,200,16,16,"NRF24L01 TX_Mode");
NRF24L01_TX_Mode();
mode=' ';//从空格键开始
while(1)
{
MPU6050ReadGyro(Gyro);
tmp_buf[0]=Gyro[2]/256;
tmp_buf[1]=Gyro[2]%256;
MPU6050ReadAcc(Accel);
tmp_buf[2]=Accel[0]/256;
tmp_buf[3]=Accel[0]%256;
tmp_buf[4]=Accel[1]/256;
tmp_buf[5]=Accel[1]%256;
printf(" 加速度%8d\n",Accel[0]);
printf(" 加速度%8d\n",Accel[1]);
printf(" 陀螺仪%8d\n",Gyro[2]);
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
{
tmp_buf[32]=0;//¼óèë½áêø·û
LCD_ShowString(60,170,239,32,16,"Sended DATA:");
LCD_ShowString(0,190,239,32,16,tmp_buf);
tmp_buf[32]=0;// 加入结束符
}else
{
LCD_ShowString(60,170,239,32,16,"Send Failed ");
LCD_Fill(0,188,240,218,WHITE);//Çå¿ÕéÏÃæμÄÏÔê¾
};
LED0=!LED0;
delay_ms(1500);
};
}
}
说明:本人想把MPU6050数据直接发送到另一个板子上并且显示出来,红色部分是发送和接收的东西,问题是发送的数据和接受的数据不一样,如下图,本程序是在原子的程序上改的,去掉了一些之前发的东西,东西,
|
|