void SYS_INIT(void) { LED_INIT(); LED_FLASH(); Moto_Init(); LED_FLASH(); Tim3_Init(500); Nvic_Init(); Uart1_Init(115200); ANO_TC_I2C2_INIT(0xA6,400000,1,1,3,3); MPU6050_Init(); Spi1_Init(); Nrf24l01_Init(MODEL_TX2,40); if(Nrf24l01_Check()) Uart1_Put_String("NRF24L01 IS OK !\r\n"); else Uart1_Put_String("NRF24L01 IS NOT OK !\r\n"); ADC1_Init(); FLASH_Unlock(); EE_INIT(); EE_READ_ACC_OFFSET(); EE_READ_GYRO_OFFSET(); EE_READ_PID(); Tim3_Control(1); }
void SYS_INIT(void) { LED_INIT(); //LED及串口IO 初始化 LED_FLASH(); //LED闪烁 Tim3_Init(500); //中断初始化 //1000=1MS,500=0.5MS Moto_Init(); //PWM // Uart1_Init(115200); //串口初始化,飞控上几乎无用 Spi1_Init(); //SPI初始化 Nvic_Init(); //中断初始化 Nrf24l01_Init(MODEL_TX2,40); //2401中断初始化 主发送 通道 40 // if(Nrf24l01_Check()) Uart1_Put_String("NRF24L01 IS OK !\r\n"); //检测2401是否初始化成功 // else Uart1_Put_String("NRF24L01 IS NOT OK !\r\n"); InitMPU6050(); ADC1_Init(); //检测电池电压 FLASH_Unlock(); //保存飞飞控参数 EE_INIT(); EE_READ_ACC_OFFSET(); EE_READ_GYRO_OFFSET(); EE_READ_PID(); PID_ROL.P = PID_PIT.P = 5; //用于初始化pid,如用匿名上位机写入pid,则屏蔽 PID_ROL.D = PID_PIT.D = 0.1; PID_YAW.P = 0.5; PID_YAW.D = 0.05; }
//************************************************************************** //参数加载 //************************************************************************** void paramLoad(void) { ctrl.pitch.shell.kp = 4; //5 ctrl.pitch.shell.ki = 0.02; ctrl.pitch.core.kp = 1.4; //1.5 ctrl.pitch.core.ki = 0.07; ctrl.pitch.core.kd = 0.35; //0.16 //The data of roll ctrl.roll.shell.kp = 4; ctrl.roll.shell.ki = 0.02; ctrl.roll.core.kp = 1.4; ctrl.roll.core.ki = 0.07; ctrl.roll.core.kd = 0.35; //The data of yaw ctrl.yaw.shell.kp = 5; ctrl.yaw.shell.kd = 0; ctrl.yaw.core.kp = 1.8; ctrl.yaw.core.ki = 0; ctrl.yaw.core.kd = 0.1; //limit for the max increment ctrl.pitch.shell.increment_max = 20; ctrl.roll.shell.increment_max = 20; ctrl.ctrlRate = 0; EE_READ_ACC_OFFSET(); //读取加速度零偏 EE_READ_MAG_OFFSET(); //读取磁力计零偏 EE_READ_Attitude_PID(); //读取内环PID参数 Gyro_OFFSET(); //采集陀螺仪零偏 }