pilot_init.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "pilot_init.h"
  2. #include "auto_pilot.h"
  3. #include "bsp_V8M_YY_led.h"
  4. #include "bsp_V8M_adc.h"
  5. #include "bsp_V8M_flash.h"
  6. #include "data_save.h"
  7. #include "drv_usart.h"
  8. #include "flight_mode.h"
  9. #include "params.h"
  10. #include "soft_can.h"
  11. #include "soft_delay.h"
  12. #include "soft_flash.h"
  13. #include "soft_gps.h"
  14. #include "soft_gs.h"
  15. #include "soft_imu.h"
  16. #include "soft_motor_output.h"
  17. #include "soft_port_uart4.h"
  18. #include "soft_rc_input.h"
  19. #include "soft_sdcard.h"
  20. #include "soft_time.h"
  21. #include "soft_timer.h"
  22. #include "soft_voltage.h"
  23. #include "stdio.h"
  24. #include "ver_config.h"
  25. #define GCS_UART_Baudrate 115200 // 与地面站通信波特率
  26. #define UART3_Baudrate 460800 // 与IMU通信波特率
  27. #define UART4_Baudrate 115200 // 外接设备通信波特率
  28. void auto_pilot_init(void)
  29. {
  30. /*****************************************************系统初始化**************************************************/
  31. // 配置系统时钟为168M 使用外部8M晶体+PLL
  32. //SystemInit();
  33. //// 中断向量表偏移
  34. //SCB->VTOR = FLASH_BASE | 0x10000;
  35. //// 设置中断向量组,1抢占优先级,3响应优先级
  36. //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  37. // 延时初始化,并启动开机时间。
  38. system_delay_initial(168);
  39. // 启动系统主定时器 1us 总计数时间为0xffffffff * 0.000001
  40. system_time_initial();
  41. // 系统定时器中断初始化
  42. system_timer_initial();
  43. // 初始化 SPI总线
  44. flash_at45db_initial();
  45. // 检查flash是否在电路班上
  46. while (!flash_isexist())
  47. {
  48. // 查询AT45DB 是否在电路板上
  49. delay_ms(50);
  50. }
  51. // 初始化 四轴姿态PID,初始化参数放在前面,因为里面包含有遥控器的校准系数。
  52. // 不然一直到获取到校准系数之前,遥控器的输入都是停留在1500us,导致无法进入电调校准的识别
  53. initial_parameters();
  54. // SBUS输入
  55. rc_input_initial();
  56. // 初始化 can 总线接口
  57. CAN_BusInit();
  58. // 电压接口初始化
  59. Voltage_Init();
  60. // PWM输出
  61. motor_output_initial();
  62. // 等待接收机器件上电
  63. delay_ms(200);
  64. // 带油门 上电,说明用户希望初始化电调
  65. esc_calibrate_enable();
  66. if (ver_par.hardware_id == HW_V8M_YY)
  67. {
  68. v8m_yy_led_init();
  69. }
  70. // 串口3
  71. imu_uart3_initial(UART3_Baudrate);
  72. // 地面站初始化
  73. gcs_init(&gcs_link, GCS_UART_Baudrate);
  74. // 检查升级标志位
  75. switch (ver_par.hardware_id)
  76. {
  77. case HW_V8M_YY:
  78. V8M_check_iap_flag();
  79. break;
  80. default:
  81. break;
  82. }
  83. // 初始化SDCARD
  84. sdcard_inital(0);
  85. // 读取最后一条log信息,初始化log结构体
  86. sd_card_init_fly_log();
  87. // 串口4
  88. port_uart4_initial();
  89. }