int main(void) { int i = 100000000; int j = 10000000; int cnt = 1000; delay_init(); led_Configuration(); MPU6050_Configuration(); // PWM_Configuration(); TIM3_PWM_Init(); TIM1_PWM_Init(); TIM2_PWM_Init(); // SysTick_Config(SystemCoreClock / 1000); // ms CtrData = CTRL_UP; while (i-- > 0) { while (j-- > 0) { ; } } while (1) { if(schedulercnt_2ms >= 2) { if (cnt > 0) { //读加速度计和陀螺仪数据 READ_MPU6050(); //飞控函数 Control(); //PWM波输出函数 PWMControl(PWM); cnt--; } else { CtrData = CTRL_STOP; Control(); PWMControl(PWM); } schedulercnt_2ms = 0; } } }
void Steering_Init(void) { STMFLASH_Read(STEERING_DATA_ADDR, (u16*)(&steering_data), sizeof(struct steering_type)); TIM2_PWM_Init(20000,71); TIM3_PWM_Init(20000,71); TIM5_PWM_Init(20000,71); TIM1_PWM_Init(20000,71); TIM8_PWM_Init(20000,71); TIM4_PWM_Init(20000,71); if(STEERING_INIT_MARK==steering_data.mark) Steering_Move(steering_data.init); else Steering_Move(default_init); }
int main(void) { u16 sta , i=0; int t = 200; delay_init(); //延时函数初始化 LED_Init(); LED0 = 0;delay_ms(200); LED0 = 1; LED1 = 0;delay_ms(200); LED1 = 1; LED2 = 0;delay_ms(200); LED2 = 1; LED3 = 0;delay_ms(200); LED3 = 1; NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 EXTIX_Init( ); NRF24L01_Init(); //初始化NRF24L01 NRF24L01_RX_Mode(); while(NRF24L01_Check() == 1)//检查NRF24L01是否在位. { LED3=!LED3; printf("NRF ERROR!!\r\n"); delay_ms(100 ); } printf("NRF okk!!\r\n"); sta=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值 NRF24L01_Write_Reg(WRITE_REG_NRF+STATUS,sta); //清除TX_DS或MAX_RT中断标志 NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除RX FIFO寄存器 TIM2_PWM_Init(999,9); //PWM OUT TIM3_Int_Init(0xffff,71); //做计时器用 IIC_Init(); InitMPU6050(); Init_HMC5883(); suanfa_GetOrigin(); //初始欧拉角 TIM4_Int_Init(49,7199); //PID调速中断 放在最后初始化,防止打断角度校准 LOCK = 1; UN_LOCK = 0; while(1){ if(LOCK) { lock(); LED0 = 0;delay_ms(500);LED0 = 1; Power = 0; Target_x = 0; Target_y = 0; } if(UN_LOCK) { suanfa(); printf("%.2lf %.2lf %.2lf\r\n",EA.Roll,EA.Pitch,EA.Yaw); // TIM_Cmd(TIM4, ENABLE); Data_Receive_Anl(); } // printf("--p\r\n"); } }