Exemplo n.º 1
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.º 2
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.º 3
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);   
		}
	}
}