Ejemplo 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);                    //等待数据更新中断到来
}
Ejemplo n.º 2
0
/********************************************
              蓝牙电源初始化函数
********************************************/
void BT_PowerInit(void)
{
	RCC->APB2ENR|=1<<3;      //使能PORTB时钟
	GPIOB->CRL&=0XFFFFF0FF;  //PB2推挽输出
	GPIOB->CRL|=0X00000300;
	GPIOB->ODR|=1<<2;        //PB2上拉
	BT_on();

}
Ejemplo n.º 3
0
/********************************************
              蓝牙电源初始化函数 (Bluetooth power initialization function)
********************************************/
void BT_PowerInit(void)
{
    RCC->APB2ENR|=1<<3;      //使能PORTB时钟	//Enable PORTB clock
    GPIOB->CRL&=0XFFFFF0FF;  //PB2推挽输出 //PB2 push-pull output
    GPIOB->CRL|=0X00000300;
    GPIOB->ODR|=1<<2;        //PB2上拉 //Pull the PB2
    BT_on();   

}
Ejemplo n.º 4
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);    
//       
    }
}
Ejemplo n.º 5
0
u32 BT_CurBaud_Get(void)
{
	static u32 bandsel[8] = {1200,2400,4800,9600,19200,38400,57600,115200};//蓝牙波特率率表
  u8 i;

		BT_on();        //开蓝牙 //Open Bluetooth
    delay_ms(500); //等待蓝牙稳定 //Wait Bluetooth stable
		/**确定当前蓝牙波特率**/ //Bluetooth determine the current baud rate
			for(i=0;i<8;i++)
			{
				UART1_init(SysClock,bandsel[i]); 
				Uart1SendaBTCmd(ATcmdAsk);
				if(CmdJudgement(ATcmdAnswer) == true)
				{
				  //printf("\r\nHM-06 baud -->%d\r\n",bandsel[i]);
					break;//得到当前波特率为Bandsel[i] //Get the current baud rate Bandsel[i]
				}
			}
	return bandsel[i];
}