Exemplo n.º 1
0
unsigned char nRF24L01_debug(void)
{
#ifdef nRF24L01_RX_Debug
    unsigned char RxBuf[RX_PLOAD_WIDTH]={0};
    SetRX_Mode();
    while(1){
        SetRX_Mode();
        if(nRF24L01_RxPacket(RxBuf)){ 
            //add your code
            return 1;
        }
    } 
#endif
    
#ifdef nRF24L01_TX_Debug   
    unsigned char sta=0; 
    unsigned char TxBuf[TX_PLOAD_WIDTH]={0};
    nRF24L01_TxPacket(TxBuf);
    while(1){ 
        nRF24L01_TxPacket(TxBuf);
        sta = SPI_Read(STATUS);
        if(sta == 0x2e){
            //add your code
            return 1;
        }
        SPI_RW_Reg(WRITE_REG+STATUS, 0xff);
        xSysCtlDelay(10000);
    }
#endif
}
Exemplo n.º 2
0
void main()
{
	nRF24L01_Config();
	SetRX_Mode();
	if(MAX_RT)
	{
		SPI_RW_Reg(FLUSH_TX,0);
	}
	SPI_RW_Reg(WRITE_REG+STATUS,0xFF);// clear RX_DR or TX_DS or MAX_RT interrupt flag
    SPI_RW_Reg(FLUSH_RX,0);
	SCON =0x40;
	TMOD = 0x20;
	TH1 = 0xfd;
	TL1 = 0xfd;
	TR1 = 1;
	EX1=1;
	IT1=0;
	EA=1;
	init_1602();
	while(1)
	{
		Control(); 
		display();
		if(RxBuf[0]==0xAA)
		{
			RxBuf[0]=0;
			//PH_dat=RxBuf[1];
			temp_dat=RxBuf[2];
			temp_dot=RxBuf[3];
			beep_flag=RxBuf[4];
		}
		delay1ms(10);
	}
}
Exemplo n.º 3
0
/********************************************
              飞控主函数入口
功能:                                        
1.初始化各个硬件
2.初始化系统参数
3.开定时器4等待数据中断到来
4.开定时器3串口广播实时姿态以及相关信息
********************************************/
int main(void)
{
  //int i;
  SystemClock_HSE(9);           //系统时钟初始化,时钟源外部晶振HSE
  //SystemClock_HSI(4);         //系统时钟初始化,时钟源内部HSI
  UART1_init(SysClock,115200); 	//串口1初始化
  NVIC_INIT();	                //中断初始化
  STMFLASH_Unlock();            //内部flash解锁
  LedInit();		                //IO初始化 
  delay_init(SysClock);         //滴答延时初始化
  BT_PowerInit();               //蓝牙电源初始化完成,默认关闭
  MotorInit();	                //马达初始化
  BatteryCheckInit();           //电池电压监测初始化
  IIC_Init();                   //IIC初始化
  MPU6050_DMP_Initialize();     //初始化DMP引擎
  //HMC5883L_SetUp();             //初始化磁力计HMC5883L
  PID_INIT();                   //PID参数初始化 
  ParameterRead();              //Flash参数读取
  NRF24L01_INIT();              //NRF24L01初始化
  SetRX_Mode();                 //设无线模块为接收模式
  PowerOn();                    //开机等待
  BT_on();                      //蓝牙开
  TIM3_Init(SysClock,10);	      //定时器3初始化,调试串口输出
  TIM4_Init(SysClock,50);	      //定时器4初始化,定时采样传感器数据,更新PID输出
  while (1);                    //等待数据更新中断到来
}
Exemplo n.º 4
0
void receive()
{
       SetRX_Mode();
	   nRF24L01_RxPacket(RxBuf);
	   IN1=RxBuf[1];
	   IN2=RxBuf[2];
	   IN3=RxBuf[3];
	   IN4=RxBuf[4];	 
	   Delay_a(10);
}
void NRFmatching(void)
{
	static uint32_t nTs,nT;
	static uint32_t writeOvertime = 2 * 1000000;// unit :us
	
	LedC_on;   //led3 always on when 2.4G matching
	nTs = micros();
	
  do  
	{   
		  NRFMatched = 0;
		  nT = micros() - nTs;
		  
		  if(nT >= writeOvertime){
				RX_ADDRESS[4] = table.NRFaddr[4];
				break;	//exit when time out,and do not change original address
			}

			SetRX_Mode();                 // reset RX mode write RX panel address
			delay_ms(4);									// delay is needed after reset NRF
		  sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
      
		  if((sta & 0x0E )== 0x00){
				NRFMatched = 1;
			}else{
				RX_ADDRESS[4] ++;		//search the next RX_ADDRESS
				if(RX_ADDRESS[4] == 0xff ){
					RX_ADDRESS[4] = 0x00;
				}
			}

  }while((sta & 0x0E )== 0x0E); 
	
	SetRX_Mode();                 // reset RX mode
	
	if((NRFMatched == 1)&&(RX_ADDRESS[4]!= table.NRFaddr[4])){
		SaveParamsToEEPROM();			//write eeprom when current addr != original addr
	}
	
	LedC_off;		// matching end 
}
Exemplo n.º 6
0
//int CheckAsk(){
//	int Asking = 0;	
//	TxBuf[1] = 0x00;
//	TxBuf[2] = 0x00;
//	nRF24L01_TxPacket(TxBuf);  
//	TxBuf[1] = 0x00;
//	TxBuf[2] = 0x00;
//	Delay(1000);
//	SetRX_Mode();
//	nRF24L01_RxPacket(RxBuf);
//   	if(RxBuf[1]){					
//		if(	RxBuf[1]==0x01){
//			Asking = 1;
//		}
//		Delay(1000);
//	}
//	RxBuf[1] = 0x00;
//	RxBuf[2] = 0x00;
//	if(Asking) return 1;
//	else return 0;
//}
//void AskRec(){
//	TxBuf[1] = 0x02 ;
//	nRF24L01_TxPacket(TxBuf);	
//	TxBuf[1] = 0x00;
//	TxBuf[2] = 0x00;
//	Delay(1000);
//	SetRX_Mode();
//	nRF24L01_RxPacket(RxBuf);
//	RxBuf[1] = 0x00;
//	RxBuf[2] = 0x00;
//}
//************************************主函数************************************************************
void main(void)
{
	int Asking,Quizing,QzFn,i;
	unsigned char tf =0;
	char Ans[NUM];
	Asking = Quizing = QzFn = 0;
    init_NRF24L01() ;
	led0=0;led1=0;led2=0;led3=0;
	P0 = seg[2];
	while(1)
	{
	    
	    if (tf==1){	
			nRF24L01_TxPacket(TxBuf);	
			TxBuf[1] = 0x00;
			tf = 0;
			Delay(1000);
	    }
		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);
   		if(RxBuf[1]){	
			QzFn = 1;
			if(RxBuf[1]>=0x40 && RxBuf[1]<=0x6f){
				Ans[RxBuf[1]-0x41] = 'a';
			}
			else if(RxBuf[1]>=0x70 && RxBuf[1]<=0x9f){
				Ans[RxBuf[1]-0x71] = 'b';
			}
			else if(RxBuf[1]>=0xa0 && RxBuf[1]<=0xcf){
				Ans[RxBuf[1]-0xa1] = 'c';
			}
			else if(RxBuf[1]>=0xd0 && RxBuf[1]<=0xff){
				Ans[RxBuf[1]-0xd1] = 'd';
			} 
			for(i = 0;i<NUM;i++){
				if(Ans[i] == 0)
					QzFn = 0;	
			}
			if(QzFn){
				P0 = 0xBF;
			}	
			
			Delay(1000);
		}
		RxBuf[1] = 0x00;
	}
}
Exemplo n.º 7
0
/********************************************
              飞控主函数入口
功能:
1.初始化各个硬件
2.初始化系统参数
3.开定时器4等待数据中断到来
4.开定时器3串口广播实时姿态以及相关信息
********************************************/
int main(void)
{
    SystemClock(9);               //系统时钟初始化
    UART1_init(SysClock,115200); 	//串口1初始化
    NVIC_INIT();	                //中断初始化
    STMFLASH_Unlock();            //内部flash解锁
    LedInit();		                //IO初始化 
    delay_init(SysClock);         //滴答延时初始化
    BT_PowerInit();               //蓝牙电源初始化完成,默认关闭
    MotorInit();	                //马达初始化
    BatteryCheckInit();           //电池电压监测初始化
    IIC_Init();                   //IIC初始化
    MPU6050_DMP_Initialize();     //初始化DMP引擎
    PID_INIT();                   //PID参数初始化 
    ParameterRead();              //Flash参数读取
    NRF24L01_INIT();              //NRF24L01初始化
    SetRX_Mode();                 //设无线模块为接收模式
    PowerOn();                    //开机等待
    BT_on();                      //蓝牙开
    TIM3_Init(36,2000);	          //定时器3初始化,调试串口输出
    TIM4_Init(36,1000);	          //定时器4初始化,定时采样传感器数据,更新PID输出
    while (1)                     //等待数据更新中断到来
    {

      
//    switch(UART1_Get_Char())//检测串口发送数据,做相应处理
//       {
//         case 'w':
//                  LedA_on;LedB_on;LedC_on;LedD_on;
//                  //TxBuf[0]++;
//                  //UART1_Put_Package(TxBuf);
//                   LedA_on;LedB_on;LedC_on;LedD_on;
//                   MotoPWM+=10;
//                   UART1_Put_Char(0x5a);
//                  break;
//         case 's':
//                  LedA_off;LedB_off;LedC_off;LedD_off;
//                  UART1_Put_Char(0xaa);
//                  MotoPWM-=10;
//                  break;
//         default :break;
//       } 
//        MotorPwmFlash(MotoPWM,MotoPWM,MotoPWM,MotoPWM);    
//       
    }
}
Exemplo n.º 8
0
//************************************主函式************************************************************
void main(void)
{
	unsigned char tf =0;
	unsigned char TxBuf[20]={0};	  
	unsigned char RxBuf[20]={0};	
    init_NRF24L01() ;
	TxBuf[1] = 1 ;
	TxBuf[2] = 1 ;
	nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
	Delay(6000);
	while(1)
	{
    	if(KEY1 ==0 ) 
	  	{
		    TxBuf[1] = 1 ;
		    tf = 1 ; LED=0;
	    }
	   if (tf==1)
       {	
			nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
			TxBuf[1] = 0x00;
			TxBuf[2] = 0x00;
			tf=0;
			Delay(1000);LED=1;
	   }
//***********************************************************************************************
		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);					
			if(	RxBuf[1]==1)
			{	 	
				LED=0;
			}
			Delay(1000);LED=1;
			RxBuf[1] = 0x00;
			RxBuf[2] = 0x00;
	}
	
}
Exemplo n.º 9
0
void My_System_Init(void)
{
uint8_t flag, i=0;
	NVIC_Configuration();
	delay_init(72);	   	 		//延时初始化	
	for(i=0;i<5;i++)
		delay_Ms_Loop(1000);	//上电短延时	确保供电稳定
	
	LED_Init();	
	LEDALL_ON;
	timer2_init();					//PWM输出定时器初始化
	timer3_init();					//PWM输出定时器初始化
	IIC_Init();
	uart_init(38400); 	    //调试用串口初始化
	My_usart2_init(38400);	//蓝牙用串口初始化
	printf("欢迎使用启天科技BUTTERFLY四旋翼\r\n");
	printf("QQ群:471023785\r\n");
	LEDALL_OFF;
	MPU6050_Init();					//6050初始化
	SPI1_INIT();						//SPI初始化,用于nRF模块
	flag = NRF_CHECK();			//检查NRF模块是否正常工作
	if(flag != 1)
	{
		while(1)
		{
			LEDALL_OFF;
			delay_Ms_Loop(200);
			LEDALL_ON;
			delay_Ms_Loop(200);
		}
	}
	NRF24L01_INIT();						//nRF初始化
	SetRX_Mode();								//设置为接收模式
	NRF24L01_INIT();						//nRF初始化
	NRF_GPIO_Interrupt_Init();	//nRF使用的外部中断的引脚初始化
	tim4_init();								//定时中断,作为系统的控制频率	
	adcInit();									//ADC初始化,测量电池电压
}