#include "usart.h"
#include "sys.h"
#include "delay.h"
#include "mpu6050.h"
#include "led.h"
#include "key.h"
#include "24l01.h"
u8 tmp_buf[6];
int main(void)
{
u8 key,mode;
u16 t=0;
int16_t Y,P,R;
delay_init();
//SYSTICK的时钟固定为HCLK时钟的1/8,SYSCLK:系统时钟为72MHz.
uart_init(9600);
//串口1初始化,波特率为9600,工作在全双工收发模式
LED_Init();
//LED初始化,GPIOA8对应于LED0,GPIOD2对应于LED1.
KEY_Init();
NRF24L01_Init();
//初始化NRF24L01
MPU6050_Init();
//MPU6050初始化设置DMP和DMP_FIFO
while(NRF24L01_Check())//检测不到24L01
{
printf("24L01 Check Failed!n");
delay_ms(500);
printf("lease Check!n");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
printf("24L01 Ready!n");
printf("KEY0:RX_Mode KEY1:TX_Moden");
//显示提示信息
while(1)//在该部分确定进入哪个模式!
{
key=KEY_Scan(0);
if(key==1)
{
mode=0;
break;
}
else if(key==2)
{
mode=1;
break;
}
t++;
if(t==200)
{
t=0;
printf("KEY0:RX_Mode KEY1:TX_Moden");
//显示提示信息
}
delay_ms(5);
}
if(mode==0)//RX模式
{
printf("NRF24L01 RX_Moden");
printf("Received DATA:n");
RX_Mode();
while(1)
{
if(NRF24L01_RxPacket(tmp_buf)==0)//接收到信息.
{
Y=((int16_t)tmp_buf[0]<<8)+tmp_buf[1];
=((int16_t)tmp_buf[2]<<8)+tmp_buf[3];
R=((int16_t)tmp_buf[4]<<8)+tmp_buf[5];
UART1_Report_IMU(Y,P,R,1,1,1,100);
}
}
}
else//TX模式
{
printf("NRF24L01 TX_Moden");
TX_Mode();
while(1)
{
MPU6050_Pose();
tmp_buf[0]=Yaw/256;
tmp_buf[1]=Yaw%256;
tmp_buf[2]=Pitch/256;
tmp_buf[3]=Pitch%256;
tmp_buf[4]=Roll/256;
tmp_buf[5]=Roll%256;
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
printf("Sended DATA:n");
else
printf("Send Failedn");
}
}
}
原子哥,我移植你的NRF24L01代码,做无线传输数据,你抽空看下我使用的对吗?驱动代码用的就是你例程里面的,现在能无线通讯,但是经过无线通讯传输的数据有抖动,什么情况呀?不用无线传输就不抖动
0