From 7905d425427a94b83db21f0756ed8ae125c25021 Mon Sep 17 00:00:00 2001
From: Robofish <1683502971@qq.com>
Date: Tue, 30 Sep 2025 04:43:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=84=E4=BA=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.mxproject | 7 +-
Core/Inc/FreeRTOSConfig.h | 2 +-
Core/Src/stm32f4xx_it.c | 1030 ++++++++---------
DevC.ioc | 2 +-
.../Inc/stm32f4xx_hal_rcc.h | 4 +-
.../Src/stm32f4xx_hal_rcc.c | 4 +-
MDK-ARM/DevC.uvguix.lvzucheng | 61 +-
MDK-ARM/DevC.uvoptx | 282 +++--
MDK-ARM/DevC.uvprojx | 948 +++++++++++++++
MDK-ARM/DevC/DevC.axf | Bin 865568 -> 0 bytes
MDK-ARM/DevC/DevC.build_log.htm | 62 +-
MDK-ARM/DevC/DevC.sct | 19 +
MDK-ARM/DevC/adc.d | 2 +
MDK-ARM/DevC/ai.d | 13 +
MDK-ARM/DevC/atti_esti.d | 56 +-
MDK-ARM/DevC/bmi088.d | 55 +
MDK-ARM/DevC/buzzer.d | 2 +
MDK-ARM/DevC/can.d | 2 +
MDK-ARM/DevC/can_1.d | 2 +
MDK-ARM/DevC/cmsis_os2.d | 2 +
MDK-ARM/DevC/config.d | 29 +-
MDK-ARM/DevC/crc.d | 2 +
MDK-ARM/DevC/crc16.d | 7 +
MDK-ARM/DevC/crc8.d | 4 +
MDK-ARM/DevC/ctrl_gimbal.d | 60 +-
MDK-ARM/DevC/ctrl_shoot.d | 68 ++
MDK-ARM/DevC/dma.d | 2 +
MDK-ARM/DevC/dr16.d | 2 +
MDK-ARM/DevC/freertos.d | 2 +
MDK-ARM/DevC/gimbal.d | 1 +
MDK-ARM/DevC/gpio.d | 2 +
MDK-ARM/DevC/gpio_1.d | 2 +
MDK-ARM/DevC/i2c.d | 2 +
MDK-ARM/DevC/init.d | 27 +-
MDK-ARM/DevC/main.d | 2 +
MDK-ARM/DevC/monitor.d | 61 +
MDK-ARM/DevC/motor_rm.d | 64 +
MDK-ARM/DevC/pwm.d | 2 +
MDK-ARM/DevC/rc.d | 20 +-
MDK-ARM/DevC/rc_can.d | 1 +
MDK-ARM/DevC/rng.d | 2 +
MDK-ARM/DevC/shoot.d | 65 ++
MDK-ARM/DevC/spi.d | 2 +
MDK-ARM/DevC/spi_1.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_adc.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_adc_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_can.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_cortex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_crc.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_dma.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_dma_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_exti.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_flash.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_flash_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_flash_ramfunc.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_gpio.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_i2c.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_i2c_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_msp.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_pcd.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_pcd_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_pwr.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_pwr_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_rcc.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_rcc_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_rng.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_spi.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_tim.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_tim_ex.d | 2 +
MDK-ARM/DevC/stm32f4xx_hal_uart.d | 2 +
MDK-ARM/DevC/stm32f4xx_it.d | 2 +
MDK-ARM/DevC/stm32f4xx_ll_usb.d | 2 +
MDK-ARM/DevC/system_stm32f4xx.d | 2 +
MDK-ARM/DevC/tim.d | 2 +
MDK-ARM/DevC/time.d | 2 +
MDK-ARM/DevC/uart.d | 2 +
MDK-ARM/DevC/usart.d | 2 +
MDK-ARM/DevC/usb_device.d | 2 +
MDK-ARM/DevC/usbd_cdc.d | 2 +
MDK-ARM/DevC/usbd_cdc_if.d | 2 +
MDK-ARM/DevC/usbd_conf.d | 2 +
MDK-ARM/DevC/usbd_core.d | 2 +
MDK-ARM/DevC/usbd_ctlreq.d | 2 +
MDK-ARM/DevC/usbd_desc.d | 2 +
MDK-ARM/DevC/usbd_ioreq.d | 2 +
MDK-ARM/startup_stm32f407xx.s | 425 +++++++
.../Source/portable/RVDS/ARM_CM4F/port.c | 775 +++++++++++++
.../Source/portable/RVDS/ARM_CM4F/portmacro.h | 243 ++++
User/device/rc_can.c | 0
User/device/rc_can.h | 56 +
User/module/config.c | 85 +-
User/module/config.h | 1 +
User/module/shoot.c | 347 +++---
User/module/shoot.h | 339 +++---
User/task/ctrl_shoot.c | 13 +-
User/task/init.c | 3 +-
User/task/rc.c | 25 +
User/task/user_task.h | 3 +
99 files changed, 4119 insertions(+), 1266 deletions(-)
create mode 100644 MDK-ARM/DevC.uvprojx
delete mode 100644 MDK-ARM/DevC/DevC.axf
create mode 100644 MDK-ARM/DevC/DevC.sct
create mode 100644 MDK-ARM/DevC/ai.d
create mode 100644 MDK-ARM/DevC/bmi088.d
create mode 100644 MDK-ARM/DevC/crc16.d
create mode 100644 MDK-ARM/DevC/crc8.d
create mode 100644 MDK-ARM/DevC/ctrl_shoot.d
create mode 100644 MDK-ARM/DevC/gimbal.d
create mode 100644 MDK-ARM/DevC/monitor.d
create mode 100644 MDK-ARM/DevC/motor_rm.d
create mode 100644 MDK-ARM/DevC/rc_can.d
create mode 100644 MDK-ARM/DevC/shoot.d
create mode 100644 MDK-ARM/startup_stm32f407xx.s
create mode 100644 Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c
create mode 100644 Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.h
create mode 100644 User/device/rc_can.c
create mode 100644 User/device/rc_can.h
diff --git a/.mxproject b/.mxproject
index 3ba56ff..74bfc3f 100644
--- a/.mxproject
+++ b/.mxproject
@@ -1,5 +1,5 @@
[PreviousLibFiles]
-LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_armv8mbl.h;
+LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h;Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rng.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h;Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_armv8mbl.h;
[PreviousUsedCMakes]
SourceFiles=Core/Src/main.c;Core/Src/gpio.c;Core/Src/freertos.c;Core/Src/adc.c;Core/Src/can.c;Core/Src/crc.c;Core/Src/dma.c;Core/Src/i2c.c;Core/Src/rng.c;Core/Src/spi.c;Core/Src/tim.c;Core/Src/usart.c;USB_DEVICE/App/usb_device.c;USB_DEVICE/Target/usbd_conf.c;USB_DEVICE/App/usbd_desc.c;USB_DEVICE/App/usbd_cdc_if.c;Core/Src/stm32f4xx_it.c;Core/Src/stm32f4xx_hal_msp.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Core/Src/system_stm32f4xx.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Core/Src/system_stm32f4xx.c;;;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;
@@ -57,3 +57,8 @@ SourcePath#1=../USB_DEVICE/App
SourcePath#2=../USB_DEVICE/Target
SourceFiles=;
+[PreviousUsedKeilFiles]
+SourceFiles=../Core/Src/main.c;../Core/Src/gpio.c;../Core/Src/freertos.c;../Core/Src/adc.c;../Core/Src/can.c;../Core/Src/crc.c;../Core/Src/dma.c;../Core/Src/i2c.c;../Core/Src/rng.c;../Core/Src/spi.c;../Core/Src/tim.c;../Core/Src/usart.c;../USB_DEVICE/App/usb_device.c;../USB_DEVICE/Target/usbd_conf.c;../USB_DEVICE/App/usbd_desc.c;../USB_DEVICE/App/usbd_cdc_if.c;../Core/Src/stm32f4xx_it.c;../Core/Src/stm32f4xx_hal_msp.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;../Core/Src/system_stm32f4xx.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;../Core/Src/system_stm32f4xx.c;;;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;
+HeaderPath=../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Middlewares/Third_Party/FreeRTOS/Source/include;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F;../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../Core/Inc;../USB_DEVICE/App;../USB_DEVICE/Target;
+CDefines=USE_HAL_DRIVER;STM32F407xx;USE_HAL_DRIVER;USE_HAL_DRIVER;
+
diff --git a/Core/Inc/FreeRTOSConfig.h b/Core/Inc/FreeRTOSConfig.h
index 16c89ac..fee994f 100644
--- a/Core/Inc/FreeRTOSConfig.h
+++ b/Core/Inc/FreeRTOSConfig.h
@@ -187,7 +187,7 @@ standard names. */
/* USER CODE BEGIN Defines */
/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */
-#define configAPPLICATION_ALLOCATED_HEAP 1
+// #define configAPPLICATION_ALLOCATED_HEAP 1
/* USER CODE END Defines */
#endif /* FREERTOS_CONFIG_H */
diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c
index 3baef83..200488b 100644
--- a/Core/Src/stm32f4xx_it.c
+++ b/Core/Src/stm32f4xx_it.c
@@ -1,515 +1,515 @@
-/* USER CODE BEGIN Header */
-/**
- ******************************************************************************
- * @file stm32f4xx_it.c
- * @brief Interrupt Service Routines.
- ******************************************************************************
- * @attention
- *
- *
© Copyright (c) 2025 STMicroelectronics.
- * All rights reserved.
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-/* USER CODE END Header */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "stm32f4xx_it.h"
-#include "FreeRTOS.h"
-#include "task.h"
-/* Private includes ----------------------------------------------------------*/
-/* USER CODE BEGIN Includes */
-#include "bsp/uart.h"
-/* USER CODE END Includes */
-
-/* Private typedef -----------------------------------------------------------*/
-/* USER CODE BEGIN TD */
-
-/* USER CODE END TD */
-
-/* Private define ------------------------------------------------------------*/
-/* USER CODE BEGIN PD */
-
-/* USER CODE END PD */
-
-/* Private macro -------------------------------------------------------------*/
-/* USER CODE BEGIN PM */
-
-/* USER CODE END PM */
-
-/* Private variables ---------------------------------------------------------*/
-/* USER CODE BEGIN PV */
-
-/* USER CODE END PV */
-
-/* Private function prototypes -----------------------------------------------*/
-/* USER CODE BEGIN PFP */
-
-/* USER CODE END PFP */
-
-/* Private user code ---------------------------------------------------------*/
-/* USER CODE BEGIN 0 */
-
-/* USER CODE END 0 */
-
-/* External variables --------------------------------------------------------*/
-extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
-extern CAN_HandleTypeDef hcan1;
-extern CAN_HandleTypeDef hcan2;
-extern DMA_HandleTypeDef hdma_i2c2_tx;
-extern DMA_HandleTypeDef hdma_i2c3_rx;
-extern DMA_HandleTypeDef hdma_spi1_rx;
-extern DMA_HandleTypeDef hdma_spi1_tx;
-extern TIM_HandleTypeDef htim1;
-extern TIM_HandleTypeDef htim7;
-extern DMA_HandleTypeDef hdma_usart1_tx;
-extern DMA_HandleTypeDef hdma_usart1_rx;
-extern DMA_HandleTypeDef hdma_usart3_rx;
-extern DMA_HandleTypeDef hdma_usart6_rx;
-extern DMA_HandleTypeDef hdma_usart6_tx;
-extern UART_HandleTypeDef huart1;
-extern UART_HandleTypeDef huart6;
-/* USER CODE BEGIN EV */
-
-/* USER CODE END EV */
-
-/******************************************************************************/
-/* Cortex-M4 Processor Interruption and Exception Handlers */
-/******************************************************************************/
-/**
- * @brief This function handles Non maskable interrupt.
- */
-void NMI_Handler(void)
-{
- /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
-
- /* USER CODE END NonMaskableInt_IRQn 0 */
- /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
- while (1)
- {
- }
- /* USER CODE END NonMaskableInt_IRQn 1 */
-}
-
-/**
- * @brief This function handles Hard fault interrupt.
- */
-void HardFault_Handler(void)
-{
- /* USER CODE BEGIN HardFault_IRQn 0 */
-
- /* USER CODE END HardFault_IRQn 0 */
- while (1)
- {
- /* USER CODE BEGIN W1_HardFault_IRQn 0 */
- /* USER CODE END W1_HardFault_IRQn 0 */
- }
-}
-
-/**
- * @brief This function handles Memory management fault.
- */
-void MemManage_Handler(void)
-{
- /* USER CODE BEGIN MemoryManagement_IRQn 0 */
-
- /* USER CODE END MemoryManagement_IRQn 0 */
- while (1)
- {
- /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
- /* USER CODE END W1_MemoryManagement_IRQn 0 */
- }
-}
-
-/**
- * @brief This function handles Pre-fetch fault, memory access fault.
- */
-void BusFault_Handler(void)
-{
- /* USER CODE BEGIN BusFault_IRQn 0 */
-
- /* USER CODE END BusFault_IRQn 0 */
- while (1)
- {
- /* USER CODE BEGIN W1_BusFault_IRQn 0 */
- /* USER CODE END W1_BusFault_IRQn 0 */
- }
-}
-
-/**
- * @brief This function handles Undefined instruction or illegal state.
- */
-void UsageFault_Handler(void)
-{
- /* USER CODE BEGIN UsageFault_IRQn 0 */
-
- /* USER CODE END UsageFault_IRQn 0 */
- while (1)
- {
- /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
- /* USER CODE END W1_UsageFault_IRQn 0 */
- }
-}
-
-/**
- * @brief This function handles Debug monitor.
- */
-void DebugMon_Handler(void)
-{
- /* USER CODE BEGIN DebugMonitor_IRQn 0 */
-
- /* USER CODE END DebugMonitor_IRQn 0 */
- /* USER CODE BEGIN DebugMonitor_IRQn 1 */
-
- /* USER CODE END DebugMonitor_IRQn 1 */
-}
-
-/**
- * @brief This function handles System tick timer.
- */
-void SysTick_Handler(void)
-{
- /* USER CODE BEGIN SysTick_IRQn 0 */
-
- /* USER CODE END SysTick_IRQn 0 */
- HAL_IncTick();
-#if (INCLUDE_xTaskGetSchedulerState == 1 )
- if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
- {
-#endif /* INCLUDE_xTaskGetSchedulerState */
- xPortSysTickHandler();
-#if (INCLUDE_xTaskGetSchedulerState == 1 )
- }
-#endif /* INCLUDE_xTaskGetSchedulerState */
- /* USER CODE BEGIN SysTick_IRQn 1 */
-
- /* USER CODE END SysTick_IRQn 1 */
-}
-
-/******************************************************************************/
-/* STM32F4xx Peripheral Interrupt Handlers */
-/* Add here the Interrupt Handlers for the used peripherals. */
-/* For the available peripheral interrupt handler names, */
-/* please refer to the startup file (startup_stm32f4xx.s). */
-/******************************************************************************/
-
-/**
- * @brief This function handles EXTI line0 interrupt.
- */
-void EXTI0_IRQHandler(void)
-{
- /* USER CODE BEGIN EXTI0_IRQn 0 */
-
- /* USER CODE END EXTI0_IRQn 0 */
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
- /* USER CODE BEGIN EXTI0_IRQn 1 */
-
- /* USER CODE END EXTI0_IRQn 1 */
-}
-
-/**
- * @brief This function handles EXTI line3 interrupt.
- */
-void EXTI3_IRQHandler(void)
-{
- /* USER CODE BEGIN EXTI3_IRQn 0 */
-
- /* USER CODE END EXTI3_IRQn 0 */
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
- /* USER CODE BEGIN EXTI3_IRQn 1 */
-
- /* USER CODE END EXTI3_IRQn 1 */
-}
-
-/**
- * @brief This function handles EXTI line4 interrupt.
- */
-void EXTI4_IRQHandler(void)
-{
- /* USER CODE BEGIN EXTI4_IRQn 0 */
-
- /* USER CODE END EXTI4_IRQn 0 */
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
- /* USER CODE BEGIN EXTI4_IRQn 1 */
-
- /* USER CODE END EXTI4_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA1 stream1 global interrupt.
- */
-void DMA1_Stream1_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */
-
- /* USER CODE END DMA1_Stream1_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_usart3_rx);
- /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */
-
- /* USER CODE END DMA1_Stream1_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA1 stream2 global interrupt.
- */
-void DMA1_Stream2_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA1_Stream2_IRQn 0 */
-
- /* USER CODE END DMA1_Stream2_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_i2c3_rx);
- /* USER CODE BEGIN DMA1_Stream2_IRQn 1 */
-
- /* USER CODE END DMA1_Stream2_IRQn 1 */
-}
-
-/**
- * @brief This function handles CAN1 RX0 interrupts.
- */
-void CAN1_RX0_IRQHandler(void)
-{
- /* USER CODE BEGIN CAN1_RX0_IRQn 0 */
-
- /* USER CODE END CAN1_RX0_IRQn 0 */
- HAL_CAN_IRQHandler(&hcan1);
- /* USER CODE BEGIN CAN1_RX0_IRQn 1 */
-
- /* USER CODE END CAN1_RX0_IRQn 1 */
-}
-
-/**
- * @brief This function handles CAN1 RX1 interrupt.
- */
-void CAN1_RX1_IRQHandler(void)
-{
- /* USER CODE BEGIN CAN1_RX1_IRQn 0 */
-
- /* USER CODE END CAN1_RX1_IRQn 0 */
- HAL_CAN_IRQHandler(&hcan1);
- /* USER CODE BEGIN CAN1_RX1_IRQn 1 */
-
- /* USER CODE END CAN1_RX1_IRQn 1 */
-}
-
-/**
- * @brief This function handles EXTI line[9:5] interrupts.
- */
-void EXTI9_5_IRQHandler(void)
-{
- /* USER CODE BEGIN EXTI9_5_IRQn 0 */
-
- /* USER CODE END EXTI9_5_IRQn 0 */
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
- /* USER CODE BEGIN EXTI9_5_IRQn 1 */
-
- /* USER CODE END EXTI9_5_IRQn 1 */
-}
-
-/**
- * @brief This function handles TIM1 break interrupt and TIM9 global interrupt.
- */
-void TIM1_BRK_TIM9_IRQHandler(void)
-{
- /* USER CODE BEGIN TIM1_BRK_TIM9_IRQn 0 */
-
- /* USER CODE END TIM1_BRK_TIM9_IRQn 0 */
- HAL_TIM_IRQHandler(&htim1);
- /* USER CODE BEGIN TIM1_BRK_TIM9_IRQn 1 */
-
- /* USER CODE END TIM1_BRK_TIM9_IRQn 1 */
-}
-
-/**
- * @brief This function handles USART1 global interrupt.
- */
-void USART1_IRQHandler(void)
-{
- /* USER CODE BEGIN USART1_IRQn 0 */
-
- /* USER CODE END USART1_IRQn 0 */
- HAL_UART_IRQHandler(&huart1);
- /* USER CODE BEGIN USART1_IRQn 1 */
- BSP_UART_IRQHandler(&huart1);
-
- /* USER CODE END USART1_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA1 stream7 global interrupt.
- */
-void DMA1_Stream7_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA1_Stream7_IRQn 0 */
-
- /* USER CODE END DMA1_Stream7_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_i2c2_tx);
- /* USER CODE BEGIN DMA1_Stream7_IRQn 1 */
-
- /* USER CODE END DMA1_Stream7_IRQn 1 */
-}
-
-/**
- * @brief This function handles TIM7 global interrupt.
- */
-void TIM7_IRQHandler(void)
-{
- /* USER CODE BEGIN TIM7_IRQn 0 */
-
- /* USER CODE END TIM7_IRQn 0 */
- HAL_TIM_IRQHandler(&htim7);
- /* USER CODE BEGIN TIM7_IRQn 1 */
-
- /* USER CODE END TIM7_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA2 stream1 global interrupt.
- */
-void DMA2_Stream1_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */
-
- /* USER CODE END DMA2_Stream1_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_usart6_rx);
- /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */
-
- /* USER CODE END DMA2_Stream1_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA2 stream2 global interrupt.
- */
-void DMA2_Stream2_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */
-
- /* USER CODE END DMA2_Stream2_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_spi1_rx);
- /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */
-
- /* USER CODE END DMA2_Stream2_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA2 stream3 global interrupt.
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA2_Stream3_IRQn 0 */
-
- /* USER CODE END DMA2_Stream3_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_spi1_tx);
- /* USER CODE BEGIN DMA2_Stream3_IRQn 1 */
-
- /* USER CODE END DMA2_Stream3_IRQn 1 */
-}
-
-/**
- * @brief This function handles CAN2 RX0 interrupts.
- */
-void CAN2_RX0_IRQHandler(void)
-{
- /* USER CODE BEGIN CAN2_RX0_IRQn 0 */
-
- /* USER CODE END CAN2_RX0_IRQn 0 */
- HAL_CAN_IRQHandler(&hcan2);
- /* USER CODE BEGIN CAN2_RX0_IRQn 1 */
-
- /* USER CODE END CAN2_RX0_IRQn 1 */
-}
-
-/**
- * @brief This function handles CAN2 RX1 interrupt.
- */
-void CAN2_RX1_IRQHandler(void)
-{
- /* USER CODE BEGIN CAN2_RX1_IRQn 0 */
-
- /* USER CODE END CAN2_RX1_IRQn 0 */
- HAL_CAN_IRQHandler(&hcan2);
- /* USER CODE BEGIN CAN2_RX1_IRQn 1 */
-
- /* USER CODE END CAN2_RX1_IRQn 1 */
-}
-
-/**
- * @brief This function handles USB On The Go FS global interrupt.
- */
-void OTG_FS_IRQHandler(void)
-{
- /* USER CODE BEGIN OTG_FS_IRQn 0 */
-
- /* USER CODE END OTG_FS_IRQn 0 */
- HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
- /* USER CODE BEGIN OTG_FS_IRQn 1 */
-
- /* USER CODE END OTG_FS_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA2 stream5 global interrupt.
- */
-void DMA2_Stream5_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA2_Stream5_IRQn 0 */
-
- /* USER CODE END DMA2_Stream5_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_usart1_rx);
- /* USER CODE BEGIN DMA2_Stream5_IRQn 1 */
-
- /* USER CODE END DMA2_Stream5_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA2 stream6 global interrupt.
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA2_Stream6_IRQn 0 */
-
- /* USER CODE END DMA2_Stream6_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_usart6_tx);
- /* USER CODE BEGIN DMA2_Stream6_IRQn 1 */
-
- /* USER CODE END DMA2_Stream6_IRQn 1 */
-}
-
-/**
- * @brief This function handles DMA2 stream7 global interrupt.
- */
-void DMA2_Stream7_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */
-
- /* USER CODE END DMA2_Stream7_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_usart1_tx);
- /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */
-
- /* USER CODE END DMA2_Stream7_IRQn 1 */
-}
-
-/**
- * @brief This function handles USART6 global interrupt.
- */
-void USART6_IRQHandler(void)
-{
- /* USER CODE BEGIN USART6_IRQn 0 */
-
- /* USER CODE END USART6_IRQn 0 */
- HAL_UART_IRQHandler(&huart6);
- /* USER CODE BEGIN USART6_IRQn 1 */
- BSP_UART_IRQHandler(&huart6);
-
- /* USER CODE END USART6_IRQn 1 */
-}
-
-/* USER CODE BEGIN 1 */
-
-/* USER CODE END 1 */
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f4xx_it.c
+ * @brief Interrupt Service Routines.
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32f4xx_it.h"
+#include "FreeRTOS.h"
+#include "task.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "bsp/uart.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
+extern CAN_HandleTypeDef hcan1;
+extern CAN_HandleTypeDef hcan2;
+extern DMA_HandleTypeDef hdma_i2c2_tx;
+extern DMA_HandleTypeDef hdma_i2c3_rx;
+extern DMA_HandleTypeDef hdma_spi1_rx;
+extern DMA_HandleTypeDef hdma_spi1_tx;
+extern TIM_HandleTypeDef htim1;
+extern TIM_HandleTypeDef htim7;
+extern DMA_HandleTypeDef hdma_usart1_tx;
+extern DMA_HandleTypeDef hdma_usart1_rx;
+extern DMA_HandleTypeDef hdma_usart3_rx;
+extern DMA_HandleTypeDef hdma_usart6_rx;
+extern DMA_HandleTypeDef hdma_usart6_tx;
+extern UART_HandleTypeDef huart1;
+extern UART_HandleTypeDef huart6;
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex-M4 Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+ while (1)
+ {
+ }
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Pre-fetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+#if (INCLUDE_xTaskGetSchedulerState == 1 )
+ if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
+ {
+#endif /* INCLUDE_xTaskGetSchedulerState */
+ xPortSysTickHandler();
+#if (INCLUDE_xTaskGetSchedulerState == 1 )
+ }
+#endif /* INCLUDE_xTaskGetSchedulerState */
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32F4xx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32f4xx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles EXTI line0 interrupt.
+ */
+void EXTI0_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI0_IRQn 0 */
+
+ /* USER CODE END EXTI0_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
+ /* USER CODE BEGIN EXTI0_IRQn 1 */
+
+ /* USER CODE END EXTI0_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line3 interrupt.
+ */
+void EXTI3_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI3_IRQn 0 */
+
+ /* USER CODE END EXTI3_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
+ /* USER CODE BEGIN EXTI3_IRQn 1 */
+
+ /* USER CODE END EXTI3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line4 interrupt.
+ */
+void EXTI4_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI4_IRQn 0 */
+
+ /* USER CODE END EXTI4_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
+ /* USER CODE BEGIN EXTI4_IRQn 1 */
+
+ /* USER CODE END EXTI4_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 stream1 global interrupt.
+ */
+void DMA1_Stream1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart3_rx);
+ /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 stream2 global interrupt.
+ */
+void DMA1_Stream2_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream2_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream2_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_i2c3_rx);
+ /* USER CODE BEGIN DMA1_Stream2_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CAN1 RX0 interrupts.
+ */
+void CAN1_RX0_IRQHandler(void)
+{
+ /* USER CODE BEGIN CAN1_RX0_IRQn 0 */
+
+ /* USER CODE END CAN1_RX0_IRQn 0 */
+ HAL_CAN_IRQHandler(&hcan1);
+ /* USER CODE BEGIN CAN1_RX0_IRQn 1 */
+
+ /* USER CODE END CAN1_RX0_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CAN1 RX1 interrupt.
+ */
+void CAN1_RX1_IRQHandler(void)
+{
+ /* USER CODE BEGIN CAN1_RX1_IRQn 0 */
+
+ /* USER CODE END CAN1_RX1_IRQn 0 */
+ HAL_CAN_IRQHandler(&hcan1);
+ /* USER CODE BEGIN CAN1_RX1_IRQn 1 */
+
+ /* USER CODE END CAN1_RX1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles EXTI line[9:5] interrupts.
+ */
+void EXTI9_5_IRQHandler(void)
+{
+ /* USER CODE BEGIN EXTI9_5_IRQn 0 */
+
+ /* USER CODE END EXTI9_5_IRQn 0 */
+ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
+ /* USER CODE BEGIN EXTI9_5_IRQn 1 */
+
+ /* USER CODE END EXTI9_5_IRQn 1 */
+}
+
+/**
+ * @brief This function handles TIM1 break interrupt and TIM9 global interrupt.
+ */
+void TIM1_BRK_TIM9_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM1_BRK_TIM9_IRQn 0 */
+
+ /* USER CODE END TIM1_BRK_TIM9_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim1);
+ /* USER CODE BEGIN TIM1_BRK_TIM9_IRQn 1 */
+
+ /* USER CODE END TIM1_BRK_TIM9_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART1 global interrupt.
+ */
+void USART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART1_IRQn 0 */
+
+ /* USER CODE END USART1_IRQn 0 */
+ HAL_UART_IRQHandler(&huart1);
+ /* USER CODE BEGIN USART1_IRQn 1 */
+ BSP_UART_IRQHandler(&huart1);
+
+ /* USER CODE END USART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 stream7 global interrupt.
+ */
+void DMA1_Stream7_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Stream7_IRQn 0 */
+
+ /* USER CODE END DMA1_Stream7_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_i2c2_tx);
+ /* USER CODE BEGIN DMA1_Stream7_IRQn 1 */
+
+ /* USER CODE END DMA1_Stream7_IRQn 1 */
+}
+
+/**
+ * @brief This function handles TIM7 global interrupt.
+ */
+void TIM7_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM7_IRQn 0 */
+
+ /* USER CODE END TIM7_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim7);
+ /* USER CODE BEGIN TIM7_IRQn 1 */
+
+ /* USER CODE END TIM7_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream1 global interrupt.
+ */
+void DMA2_Stream1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart6_rx);
+ /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream2 global interrupt.
+ */
+void DMA2_Stream2_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream2_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_spi1_rx);
+ /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream3 global interrupt.
+ */
+void DMA2_Stream3_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream3_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream3_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_spi1_tx);
+ /* USER CODE BEGIN DMA2_Stream3_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CAN2 RX0 interrupts.
+ */
+void CAN2_RX0_IRQHandler(void)
+{
+ /* USER CODE BEGIN CAN2_RX0_IRQn 0 */
+
+ /* USER CODE END CAN2_RX0_IRQn 0 */
+ HAL_CAN_IRQHandler(&hcan2);
+ /* USER CODE BEGIN CAN2_RX0_IRQn 1 */
+
+ /* USER CODE END CAN2_RX0_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CAN2 RX1 interrupt.
+ */
+void CAN2_RX1_IRQHandler(void)
+{
+ /* USER CODE BEGIN CAN2_RX1_IRQn 0 */
+
+ /* USER CODE END CAN2_RX1_IRQn 0 */
+ HAL_CAN_IRQHandler(&hcan2);
+ /* USER CODE BEGIN CAN2_RX1_IRQn 1 */
+
+ /* USER CODE END CAN2_RX1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USB On The Go FS global interrupt.
+ */
+void OTG_FS_IRQHandler(void)
+{
+ /* USER CODE BEGIN OTG_FS_IRQn 0 */
+
+ /* USER CODE END OTG_FS_IRQn 0 */
+ HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
+ /* USER CODE BEGIN OTG_FS_IRQn 1 */
+
+ /* USER CODE END OTG_FS_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream5 global interrupt.
+ */
+void DMA2_Stream5_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream5_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream5_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_rx);
+ /* USER CODE BEGIN DMA2_Stream5_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream5_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream6 global interrupt.
+ */
+void DMA2_Stream6_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream6_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream6_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart6_tx);
+ /* USER CODE BEGIN DMA2_Stream6_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream6_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA2 stream7 global interrupt.
+ */
+void DMA2_Stream7_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */
+
+ /* USER CODE END DMA2_Stream7_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_tx);
+ /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */
+
+ /* USER CODE END DMA2_Stream7_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART6 global interrupt.
+ */
+void USART6_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART6_IRQn 0 */
+
+ /* USER CODE END USART6_IRQn 0 */
+ HAL_UART_IRQHandler(&huart6);
+ /* USER CODE BEGIN USART6_IRQn 1 */
+ BSP_UART_IRQHandler(&huart6);
+
+ /* USER CODE END USART6_IRQn 1 */
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/DevC.ioc b/DevC.ioc
index 3be775d..94215c8 100644
--- a/DevC.ioc
+++ b/DevC.ioc
@@ -552,7 +552,7 @@ ProjectManager.ProjectName=DevC
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x1000
-ProjectManager.TargetToolchain=CMake
+ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
diff --git a/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h
index 0dba2cf..0faf69d 100644
--- a/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h
+++ b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h
@@ -1245,8 +1245,8 @@ typedef struct
*/
/* Initialization and de-initialization functions ******************************/
HAL_StatusTypeDef HAL_RCC_DeInit(void);
-HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);
-HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency);
+HAL_StatusTypeDef HAL_RCC_OscConfig(const RCC_OscInitTypeDef *RCC_OscInitStruct);
+HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency);
/**
* @}
*/
diff --git a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
index 4cf59ef..98c38ca 100644
--- a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
+++ b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
@@ -218,7 +218,7 @@ __weak HAL_StatusTypeDef HAL_RCC_DeInit(void)
* first and then HSE On or HSE Bypass.
* @retval HAL status
*/
-__weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
+__weak HAL_StatusTypeDef HAL_RCC_OscConfig(const RCC_OscInitTypeDef *RCC_OscInitStruct)
{
uint32_t tickstart, pll_config;
@@ -590,7 +590,7 @@ __weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruc
* (for more details refer to section above "Initialization/de-initialization functions")
* @retval None
*/
-HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
+HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
{
uint32_t tickstart;
diff --git a/MDK-ARM/DevC.uvguix.lvzucheng b/MDK-ARM/DevC.uvguix.lvzucheng
index 931ee57..fe1fe20 100644
--- a/MDK-ARM/DevC.uvguix.lvzucheng
+++ b/MDK-ARM/DevC.uvguix.lvzucheng
@@ -25,7 +25,7 @@
204
Performance Analyzer
- 275 137 137 366
+ 915
@@ -34,7 +34,7 @@
35141
Event Statistics
- 250 50 619
+ 200 50 700
1506
@@ -110,8 +110,8 @@
0
- 458
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000003000000020000000100000046433A5C4D61635C486F6D655C446F63756D656E74735C525C62616C616E63655F696E66616E7472795C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000C5D4F200FFFFFFFF38433A5C4D61635C486F6D655C446F63756D656E74735C525C62616C616E63655F696E66616E7472795C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF41433A5C4D61635C486F6D655C446F63756D656E74735C525C62616C616E63655F696E66616E7472795C557365725C7461736B5C6374726C5F636861737369732E63000000000E6374726C5F636861737369732E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000EF0000007900000092050000E5020000
+ 361
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000000000000100000038433A5C4D61635C486F6D655C446F63756D656E74735C525C62616C616E63655F696E66616E7472795C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF46433A5C4D61635C486F6D655C446F63756D656E74735C525C62616C616E63655F696E66616E7472795C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000EF000000790000009205000081010000
@@ -150,7 +150,7 @@
0
16
- 0300000066000000BA000000A2020000
+ 0300000066000000BA0000003E010000
16
@@ -170,7 +170,7 @@
0
16
- 0300000066000000BA000000A2020000
+ 0300000066000000BA0000003E010000
16
@@ -450,7 +450,7 @@
0
16
- 0300000066000000BA000000A2020000
+ 0300000066000000BA0000003E010000
16
@@ -470,7 +470,7 @@
0
16
- 0300000066000000BA000000A2020000
+ 0300000066000000BA0000003E010000
16
@@ -490,7 +490,7 @@
0
16
- 00000000D30200006405000036030000
+ 000000006F0100006405000036030000
16
@@ -530,7 +530,7 @@
0
16
- 03000000D6020000610500001D030000
+ 030000007201000061050000B9010000
16
@@ -1170,7 +1170,7 @@
0
16
- 03000000D6020000610500001D030000
+ 030000007201000061050000B9010000
16
@@ -1190,7 +1190,7 @@
0
16
- 03000000D6020000610500001D030000
+ 030000007201000061050000B9010000
16
@@ -1250,7 +1250,7 @@
0
16
- 03000000D6020000610500001D030000
+ 030000007201000061050000B9010000
16
@@ -1270,7 +1270,7 @@
0
16
- 03000000D6020000610500001D030000
+ 030000007201000061050000B9010000
16
@@ -1799,7 +1799,7 @@
3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC1000000C60000005E040000CA000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000EF000000790000008C040000F0000000C10000004F0000005E040000C60000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9D0300004F000000A1030000C9010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000CF030000790000008C040000F3010000A10300004F0000005E040000C901000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFBD0000004F000000C1000000BB020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000002E00000079000000EB000000E5020000000000004F000000BD000000BB0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000B50100005E040000B901000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000002E000000E30100008C0400006E02000000000000B90100005E0400004402000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF2F020000B9010000330200004402000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000BB02000064050000BF020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002E000000E9020000920500006003000000000000BF02000064050000360300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC1000000C60000005E040000CA000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000EF000000790000008C040000F0000000C10000004F0000005E040000C60000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9D0300004F000000A1030000C9010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000CF030000790000008C040000F3010000A10300004F0000005E040000C901000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFBD0000004F000000C100000057010000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000002E00000079000000EB000000E5020000000000004F000000BD000000570100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000B50100005E040000B901000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000002E000000E30100008C0400006E02000000000000B90100005E0400004402000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF2F020000B9010000330200004402000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000057010000640500005B0100000100000001000010040000000100000000FEFFFFDC000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002E000000E90200009205000060030000000000005B01000064050000360300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
59392
@@ -1862,34 +1862,25 @@
0
100
- 2
+ 0
+
+ ../Core/Src/main.c
+ 34
+ 69
+ 91
+ 1
+
+ 0
+
startup_stm32f407xx.s
0
- 164
+ 167
175
0
0
-
- ../Core/Src/main.c
- 0
- 69
- 77
- 1
-
- 0
-
-
- ..\User\task\ctrl_chassis.c
- 13
- 1
- 22
- 1
-
- 0
-
diff --git a/MDK-ARM/DevC.uvoptx b/MDK-ARM/DevC.uvoptx
index 34531cb..9675a0b 100644
--- a/MDK-ARM/DevC.uvoptx
+++ b/MDK-ARM/DevC.uvoptx
@@ -26,7 +26,7 @@
0x4
ARM-ADS
- 25000000
+ 12000000
1
1
@@ -1009,18 +1009,6 @@
0
0
0
- ..\User\bsp\dwt.c
- dwt.c
- 0
- 0
-
-
- 9
- 65
- 1
- 0
- 0
- 0
..\User\bsp\gpio.c
gpio.c
0
@@ -1028,7 +1016,7 @@
9
- 66
+ 65
1
0
0
@@ -1040,7 +1028,7 @@
9
- 67
+ 66
1
0
0
@@ -1052,7 +1040,7 @@
9
- 68
+ 67
1
0
0
@@ -1064,7 +1052,7 @@
9
- 69
+ 68
1
0
0
@@ -1076,7 +1064,7 @@
9
- 70
+ 69
1
0
0
@@ -1096,7 +1084,7 @@
0
10
- 71
+ 70
1
0
0
@@ -1106,6 +1094,18 @@
0
0
+
+ 10
+ 71
+ 1
+ 0
+ 0
+ 0
+ ..\User\component\crc8.c
+ crc8.c
+ 0
+ 0
+
10
72
@@ -1113,8 +1113,8 @@
0
0
0
- ..\User\component\cmd.c
- cmd.c
+ ..\User\component\crc16.c
+ crc16.c
0
0
@@ -1166,42 +1166,6 @@
0
0
-
- 10
- 77
- 1
- 0
- 0
- 0
- ..\User\component\kinematics.c
- kinematics.c
- 0
- 0
-
-
- 10
- 78
- 1
- 0
- 0
- 0
- ..\User\component\lqr.c
- lqr.c
- 0
- 0
-
-
- 10
- 79
- 1
- 0
- 0
- 0
- ..\User\component\vmc.c
- vmc.c
- 0
- 0
-
@@ -1212,7 +1176,19 @@
0
11
- 80
+ 77
+ 1
+ 0
+ 0
+ 0
+ ..\User\device\bmi088.c
+ bmi088.c
+ 0
+ 0
+
+
+ 11
+ 78
1
0
0
@@ -1224,19 +1200,7 @@
11
- 81
- 1
- 0
- 0
- 0
- ..\User\device\dm_imu.c
- dm_imu.c
- 0
- 0
-
-
- 11
- 82
+ 79
1
0
0
@@ -1248,7 +1212,7 @@
11
- 83
+ 80
1
0
0
@@ -1260,25 +1224,25 @@
11
- 84
+ 81
1
0
0
0
- ..\User\device\motor_lk.c
- motor_lk.c
+ ..\User\device\motor_rm.c
+ motor_rm.c
0
0
11
- 85
+ 82
1
0
0
0
- ..\User\device\motor_lz.c
- motor_lz.c
+ ..\User\device\rc_can.c
+ rc_can.c
0
0
@@ -1292,7 +1256,7 @@
0
12
- 86
+ 83
1
0
0
@@ -1304,13 +1268,25 @@
12
- 87
+ 84
1
0
0
0
- ..\User\module\balance_chassis.c
- balance_chassis.c
+ ..\User\module\gimbal.c
+ gimbal.c
+ 0
+ 0
+
+
+ 12
+ 85
+ 1
+ 0
+ 0
+ 0
+ ..\User\module\shoot.c
+ shoot.c
0
0
@@ -1324,67 +1300,19 @@
0
13
- 88
+ 86
1
0
0
0
- ..\User\task\blink.c
- blink.c
+ ..\User\task\ai.c
+ ai.c
0
0
13
- 89
- 1
- 0
- 0
- 0
- ..\User\task\init.c
- init.c
- 0
- 0
-
-
- 13
- 90
- 1
- 0
- 0
- 0
- ..\User\task\rc.c
- rc.c
- 0
- 0
-
-
- 13
- 91
- 1
- 0
- 0
- 0
- ..\User\task\user_task.c
- user_task.c
- 0
- 0
-
-
- 13
- 92
- 5
- 0
- 0
- 0
- ..\User\task\user_task.h
- user_task.h
- 0
- 0
-
-
- 13
- 93
+ 87
1
0
0
@@ -1396,19 +1324,7 @@
13
- 94
- 1
- 0
- 0
- 0
- ..\User\task\ctrl_chassis.c
- ctrl_chassis.c
- 0
- 0
-
-
- 13
- 95
+ 88
1
0
0
@@ -1418,6 +1334,78 @@
0
0
+
+ 13
+ 89
+ 1
+ 0
+ 0
+ 0
+ ..\User\task\ctrl_shoot.c
+ ctrl_shoot.c
+ 0
+ 0
+
+
+ 13
+ 90
+ 1
+ 0
+ 0
+ 0
+ ..\User\task\init.c
+ init.c
+ 0
+ 0
+
+
+ 13
+ 91
+ 1
+ 0
+ 0
+ 0
+ ..\User\task\monitor.c
+ monitor.c
+ 0
+ 0
+
+
+ 13
+ 92
+ 1
+ 0
+ 0
+ 0
+ ..\User\task\rc.c
+ rc.c
+ 0
+ 0
+
+
+ 13
+ 93
+ 1
+ 0
+ 0
+ 0
+ ..\User\task\user_task.c
+ user_task.c
+ 0
+ 0
+
+
+ 13
+ 94
+ 5
+ 0
+ 0
+ 0
+ ..\User\task\user_task.h
+ user_task.h
+ 0
+ 0
+
diff --git a/MDK-ARM/DevC.uvprojx b/MDK-ARM/DevC.uvprojx
new file mode 100644
index 0000000..778995d
--- /dev/null
+++ b/MDK-ARM/DevC.uvprojx
@@ -0,0 +1,948 @@
+
+
+
+ 2.1
+
+ ### uVision Project, (C) Keil Software
+
+
+
+ DevC
+ 0x4
+ ARM-ADS
+ 6160000::V6.16::ARMCLANG
+ 6160000::V6.16::ARMCLANG
+ 1
+
+
+ STM32F407IGHx
+ STMicroelectronics
+ Keil.STM32F4xx_DFP.3.0.0
+ https://www.keil.com/pack/
+ IRAM(0x20000000-0x2001BFFF) IRAM2(0x2001C000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32F407IGHx$CMSIS\SVD\STM32F407.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\DevC\
+ DevC
+ 1
+ 0
+ 1
+ 1
+ 1
+
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 1
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 1
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP -MPU
+ DCM.DLL
+ -pCM4
+ SARMCM3.DLL
+ -MPU
+ TCM.DLL
+ -pCM4
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4101
+
+ 1
+ BIN\UL2CM3.DLL
+ "" ()
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M4"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 8
+ 0
+ 0
+ 0
+ 0
+ 3
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x1c000
+
+
+ 1
+ 0x8000000
+ 0x100000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x100000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x1c000
+
+
+ 0
+ 0x2001c000
+ 0x4000
+
+
+
+
+
+ 1
+ 4
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 0
+ 0
+ 1
+ 0
+ 0
+ 3
+ 3
+ 1
+ 1
+ 0
+ 0
+ 0
+
+
+ USE_HAL_DRIVER,STM32F407xx
+
+ ../Core/Inc;../USB_DEVICE/App;../USB_DEVICE/Target;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Middlewares/Third_Party/FreeRTOS/Source/include;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F;../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../User
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+
+
+
+
+ ../Core/Inc;../USB_DEVICE/App;../USB_DEVICE/Target;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Middlewares/Third_Party/FreeRTOS/Source/include;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F;../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Application/MDK-ARM
+
+
+ startup_stm32f407xx.s
+ 2
+ startup_stm32f407xx.s
+
+
+
+
+ Application/User/Core
+
+
+ main.c
+ 1
+ ../Core/Src/main.c
+
+
+ gpio.c
+ 1
+ ../Core/Src/gpio.c
+
+
+ freertos.c
+ 1
+ ../Core/Src/freertos.c
+
+
+ adc.c
+ 1
+ ../Core/Src/adc.c
+
+
+ can.c
+ 1
+ ../Core/Src/can.c
+
+
+ crc.c
+ 1
+ ../Core/Src/crc.c
+
+
+ dma.c
+ 1
+ ../Core/Src/dma.c
+
+
+ i2c.c
+ 1
+ ../Core/Src/i2c.c
+
+
+ rng.c
+ 1
+ ../Core/Src/rng.c
+
+
+ spi.c
+ 1
+ ../Core/Src/spi.c
+
+
+ tim.c
+ 1
+ ../Core/Src/tim.c
+
+
+ usart.c
+ 1
+ ../Core/Src/usart.c
+
+
+ stm32f4xx_it.c
+ 1
+ ../Core/Src/stm32f4xx_it.c
+
+
+ stm32f4xx_hal_msp.c
+ 1
+ ../Core/Src/stm32f4xx_hal_msp.c
+
+
+
+
+ Application/User/USB_DEVICE/App
+
+
+ usb_device.c
+ 1
+ ../USB_DEVICE/App/usb_device.c
+
+
+ usbd_desc.c
+ 1
+ ../USB_DEVICE/App/usbd_desc.c
+
+
+ usbd_cdc_if.c
+ 1
+ ../USB_DEVICE/App/usbd_cdc_if.c
+
+
+
+
+ Application/User/USB_DEVICE/Target
+
+
+ usbd_conf.c
+ 1
+ ../USB_DEVICE/Target/usbd_conf.c
+
+
+
+
+ Drivers/STM32F4xx_HAL_Driver
+
+
+ stm32f4xx_hal_pcd.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c
+
+
+ stm32f4xx_hal_pcd_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c
+
+
+ stm32f4xx_ll_usb.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c
+
+
+ stm32f4xx_hal_rcc.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
+
+
+ stm32f4xx_hal_rcc_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c
+
+
+ stm32f4xx_hal_flash.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c
+
+
+ stm32f4xx_hal_flash_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c
+
+
+ stm32f4xx_hal_flash_ramfunc.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c
+
+
+ stm32f4xx_hal_gpio.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c
+
+
+ stm32f4xx_hal_dma_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c
+
+
+ stm32f4xx_hal_dma.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c
+
+
+ stm32f4xx_hal_pwr.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c
+
+
+ stm32f4xx_hal_pwr_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c
+
+
+ stm32f4xx_hal_cortex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c
+
+
+ stm32f4xx_hal.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
+
+
+ stm32f4xx_hal_exti.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c
+
+
+ stm32f4xx_hal_adc.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c
+
+
+ stm32f4xx_hal_adc_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c
+
+
+ stm32f4xx_ll_adc.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c
+
+
+ stm32f4xx_hal_can.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c
+
+
+ stm32f4xx_hal_crc.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c
+
+
+ stm32f4xx_hal_i2c.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c
+
+
+ stm32f4xx_hal_i2c_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c
+
+
+ stm32f4xx_hal_rng.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rng.c
+
+
+ stm32f4xx_hal_spi.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
+
+
+ stm32f4xx_hal_tim.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c
+
+
+ stm32f4xx_hal_tim_ex.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c
+
+
+ stm32f4xx_hal_uart.c
+ 1
+ ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c
+
+
+
+
+ Drivers/CMSIS
+
+
+ system_stm32f4xx.c
+ 1
+ ../Core/Src/system_stm32f4xx.c
+
+
+
+
+ Middlewares/FreeRTOS
+
+
+ croutine.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/croutine.c
+
+
+ event_groups.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c
+
+
+ list.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/list.c
+
+
+ queue.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/queue.c
+
+
+ stream_buffer.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c
+
+
+ tasks.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/tasks.c
+
+
+ timers.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/timers.c
+
+
+ cmsis_os2.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c
+
+
+ heap_4.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c
+
+
+ port.c
+ 1
+ ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c
+
+
+
+
+ Middlewares/USB_Device_Library
+
+
+ usbd_core.c
+ 1
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c
+
+
+ usbd_ctlreq.c
+ 1
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c
+
+
+ usbd_ioreq.c
+ 1
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
+
+
+ usbd_cdc.c
+ 1
+ ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c
+
+
+
+
+ User/bsp
+
+
+ can.c
+ 1
+ ..\User\bsp\can.c
+
+
+ gpio.c
+ 1
+ ..\User\bsp\gpio.c
+
+
+ mm.c
+ 1
+ ..\User\bsp\mm.c
+
+
+ pwm.c
+ 1
+ ..\User\bsp\pwm.c
+
+
+ spi.c
+ 1
+ ..\User\bsp\spi.c
+
+
+ time.c
+ 1
+ ..\User\bsp\time.c
+
+
+ uart.c
+ 1
+ ..\User\bsp\uart.c
+
+
+
+
+ User/component
+
+
+ ahrs.c
+ 1
+ ..\User\component\ahrs.c
+
+
+ crc8.c
+ 1
+ ..\User\component\crc8.c
+
+
+ crc16.c
+ 1
+ ..\User\component\crc16.c
+
+
+ filter.c
+ 1
+ ..\User\component\filter.c
+
+
+ limiter.c
+ 1
+ ..\User\component\limiter.c
+
+
+ pid.c
+ 1
+ ..\User\component\pid.c
+
+
+ user_math.c
+ 1
+ ..\User\component\user_math.c
+
+
+
+
+ User/device
+
+
+ bmi088.c
+ 1
+ ..\User\device\bmi088.c
+
+
+ buzzer.c
+ 1
+ ..\User\device\buzzer.c
+
+
+ dr16.c
+ 1
+ ..\User\device\dr16.c
+
+
+ motor.c
+ 1
+ ..\User\device\motor.c
+
+
+ motor_rm.c
+ 1
+ ..\User\device\motor_rm.c
+
+
+ rc_can.c
+ 1
+ ..\User\device\rc_can.c
+
+
+
+
+ User/module
+
+
+ config.c
+ 1
+ ..\User\module\config.c
+
+
+ gimbal.c
+ 1
+ ..\User\module\gimbal.c
+
+
+ shoot.c
+ 1
+ ..\User\module\shoot.c
+
+
+
+
+ User/task
+
+
+ ai.c
+ 1
+ ..\User\task\ai.c
+
+
+ atti_esti.c
+ 1
+ ..\User\task\atti_esti.c
+
+
+ ctrl_gimbal.c
+ 1
+ ..\User\task\ctrl_gimbal.c
+
+
+ ctrl_shoot.c
+ 1
+ ..\User\task\ctrl_shoot.c
+
+
+ init.c
+ 1
+ ..\User\task\init.c
+
+
+ monitor.c
+ 1
+ ..\User\task\monitor.c
+
+
+ rc.c
+ 1
+ ..\User\task\rc.c
+
+
+ user_task.c
+ 1
+ ..\User\task\user_task.c
+
+
+ user_task.h
+ 5
+ ..\User\task\user_task.h
+
+
+
+
+ ::CMSIS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DevC
+ 1
+
+
+
+
+
diff --git a/MDK-ARM/DevC/DevC.axf b/MDK-ARM/DevC/DevC.axf
deleted file mode 100644
index 4360ecbe427f2d99beb1596df7d2be40d2909c8d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 865568
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