#include "pilot_init.h" #include "auto_pilot.h" #include "bsp_V8M_YY_led.h" #include "bsp_V8M_adc.h" #include "bsp_V8M_flash.h" #include "data_save.h" #include "drv_usart.h" #include "flight_mode.h" #include "params.h" #include "soft_can.h" #include "soft_delay.h" #include "soft_flash.h" #include "soft_gps.h" #include "soft_gs.h" #include "soft_imu.h" #include "soft_motor_output.h" #include "soft_port_uart4.h" #include "soft_rc_input.h" #include "soft_sdcard.h" #include "soft_time.h" #include "soft_timer.h" #include "soft_voltage.h" #include "stdio.h" #include "ver_config.h" #define GCS_UART_Baudrate 115200 // 与地面站通信波特率 #define UART3_Baudrate 460800 // 与IMU通信波特率 #define UART4_Baudrate 115200 // 外接设备通信波特率 // 有关于程序的执行地址 要修改链接文件 void auto_pilot_init(void) { /*****************************************************系统初始化**************************************************/ // 配置系统时钟为168M 使用外部8M晶体+PLL //SystemInit(); //// 中断向量表偏移 //SCB->VTOR = FLASH_BASE | 0x10000; //// 设置中断向量组,1抢占优先级,3响应优先级 //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 延时初始化,并启动开机时间。 system_delay_initial(168); // 启动系统主定时器 1us 总计数时间为0xffffffff * 0.000001 system_time_initial(); // 系统定时器中断初始化 system_timer_initial(); // 初始化 SPI总线 flash_at45db_initial(); // 检查flash是否在电路班上 while (!flash_isexist()) { // 查询AT45DB 是否在电路板上 delay_ms(50); } // 初始化 四轴姿态PID,初始化参数放在前面,因为里面包含有遥控器的校准系数。 // 不然一直到获取到校准系数之前,遥控器的输入都是停留在1500us,导致无法进入电调校准的识别 initial_parameters(); // SBUS输入 rc_input_initial(); // 初始化 can 总线接口 CAN_BusInit(); // 电压接口初始化 Voltage_Init(); // PWM输出 motor_output_initial(); // 等待接收机器件上电 delay_ms(200); // 带油门 上电,说明用户希望初始化电调 esc_calibrate_enable(); if (ver_par.hardware_id == HW_V8M_YY) { v8m_yy_led_init(); } // 串口3 imu_uart3_initial(UART3_Baudrate); // 地面站初始化 gcs_init(&gcs_link, GCS_UART_Baudrate); // 检查升级标志位 switch (ver_par.hardware_id) { case HW_V8M_YY: V8M_check_iap_flag(); break; default: break; } // 初始化SDCARD sdcard_inital(0); // 读取最后一条log信息,初始化log结构体 sd_card_init_fly_log(); // 串口4 port_uart4_initial(); }