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