Exemplo n.º 1
0
int main(void)
{
	  SystemClock_HSI(9);    //系统时钟设置,9倍频,36M
    LedInit();						 //LED 初始化	
    Adc_Init();            //摇杆AD初始化
    NRF24L01_Init();       //无线模块初始化
		TX_Mode();						 //发送模式
    TIM4_Init();           //定时器初始化,定时周期为1ms,1ms发送一次摇杆AD值
    KeyInit();             //按键初始化
    TxBuf[30]=0xA5;        //对应遥控器,该位写0xA5,保证飞机能在开机的时候能收到一个完整的32字节的数据包
    GetAD(R_Mode);          
/*******************************************************/
//以下为遥控解锁段         
/*******************************************************/
     while((Throttle>5)||(Roll>5))//解锁条件:油门拉到最低,方向打到最左解锁
        {
          GetAD(R_Mode);//得到各路AD值并显示
        }
        TxBuf[28]=0;   //对应遥控器,该字节写0,使飞机跳过写参数那一步
        TxBuf[27]=0xA5;//解锁飞机
        TxBuf[31]=0xA5;//解锁成功,使能飞控
/*******************************************************/
//解锁完成
/*******************************************************/
    
   Led1=1;
   Led2=1;
   Led3=1;
   Led4=1;
   Led5=0;
  while(1)
		{  

      GetAD(R_Mode);                            //得到各路AD值并显示
      if(Key1==0){TxBuf[10]=0xA5;Led1=1; }//按键子程序,用于设置一键操作,如一键翻滚,一键返航等
      else {TxBuf[10]=0;Led1=0;}
		}
}
Exemplo n.º 2
0
int main(void)
{
	static char ledsta;
	/***********************************/
	SystemClock_HSI(9);           //系统时钟初始化,时钟源内部HSI
	cycleCounterInit();				    // Init cycle counter
	SysTick_Config(SystemCoreClock / 1000);	//SysTick开启系统tick定时器并初始化其中断,1ms
	UART1_init(SysClock,uart1baudSet); //串口1初始化
  NVIC_INIT();	                //中断初始化
  STMFLASH_Unlock();            //内部flash解锁
  LoadParamsFromEEPROM();				//加载系统参数配置表
  LedInit();	                  //IO初始化
  Adc_Init();										//摇杆AD初始化
	KeyInit();										//按键初始化
 	NRF24L01_INIT();              //NRF24L01初始化
  SetTX_Mode();                 //设无线模块为接收模式
  controlClibra();							//遥控摇杆校准
#ifdef UART_DEBUG  
	TIM3_Init(SysClock,2000);			//定时器初始化,1s为周期打印摇杆值
#endif
	TIM4_Init(SysClock,TIME4_Preiod);	  //定时器4初始化,定时时间单位:(TIME4_Preiod)微秒
	
	LedSet(led2,1);
	LedSet(led3,1);
	
	LoadRCdata();                //摇杆赋值
	//RockerUnlockcrazepony();	 //摆杆启动
  Lockflag = 0;								 //解锁标志,1表示产生了一次按键操作,0表示该按键操作已经发送到飞控
	
  LedSet(led2,0);
	LedSet(led3,0);
	 
  while (1)             
	{ 
		//10Hz loop
		if(flag10Hz == 1)  //10Hz 
		{		
			flag10Hz = 0;
			/*status led*/
			ledsta = !ledsta;
			LedSet(signalLED,ledsta);				        
			/*crazepony Lock*/
			KeyLockcrazepony();
			/*IMUcalibrate  */
			IMUcalibrate();
			/*remote calibrate*/
			Remotecalibrate();
		}

		//50Hz loop
		if(flag50Hz == 1)
		{
			LoadRCdata();
			flag50Hz = 0;
			
		}
		
		// 80Hz 12.5ms
		if(flag80Hz)
		{
			flag80Hz = 0;
			CommUAVUpload(MSP_SET_4CON);   
		}
	}
}