diff --git a/.eide/eide.yml b/.eide/eide.yml index 5d2457e..d7a47d9 100644 --- a/.eide/eide.yml +++ b/.eide/eide.yml @@ -164,9 +164,14 @@ virtualFolder: - path: GSRL/Dependence/CMSIS-DSP/Source/TransformFunctions/TransformFunctionsF16.c - path: GSRL/Dependence/CMSIS-DSP/Source/WindowFunctions/WindowFunctions.c folders: [] + - name: chariot + files: + - path: chariot/src/crt_chassis.cpp + - path: chariot/src/crt_module.cpp + folders: [] - name: Task files: - - path: Task/src/tsk_test.cpp + - path: Task/src/tsk_chassis.cpp folders: [] dependenceList: [] outDir: build @@ -201,6 +206,9 @@ targets: - GSRL/Algorithm/inc - GSRL/Device/inc - GSRL/Dependence/eigen + - Task/src + - chariot/inc + - chariot/src libList: [] excludeList: [] toolchain: GCC @@ -252,7 +260,7 @@ targets: OpenOCD: baseAddr: "0x08000000" bin: "" - interface: cmsis-dap + interface: stlink target: stm32f4x STLink: address: "0x08000000" diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..74128da --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,42 @@ + +# GSRL — AI coding assistant guide + +Purpose: give concise, actionable context so AI agents are immediately productive in this embedded robot repository. + +- **Big picture:** This repo builds an STM32-based robot firmware composed of: + - platform BSP generated by STM32CubeMX: [CubeMX_BSP](CubeMX_BSP) (toolchain file: [CubeMX_BSP/cmake/gcc-arm-none-eabi.cmake](CubeMX_BSP/cmake/gcc-arm-none-eabi.cmake)). + - core libraries under [GSRL](GSRL) and driver/vehicle modules under [chariot](chariot) and [Task](Task). + - The top-level build is configured with CMake and CMake presets ([CMakePresets.json](CMakePresets.json)) — use `cmake --preset Debug` or `cmake --preset Release` then `cmake --build --preset Debug`. + +- **Architecture & boundaries:** + - Hardware / BSP: [CubeMX_BSP](CubeMX_BSP) provides low-level drivers and the cross-toolchain. + - Platform services: FreeRTOS is used for concurrency — task implementations live in `Task/src` (look at `Task/src/tsk_chassis.cpp`). + - Vehicle subsystem: `chariot` contains chassis/module implementations and motor wrappers (`chariot/src/crt_chassis.cpp`, `chariot/inc`). AI should not change low-level HAL without explicit mention. + +- **Key developer workflows (reproducible commands):** + - Configure & build (uses Ninja + arm-none-eabi toolchain): + - `cmake --preset Debug` + - `cmake --build --preset Debug` + - Use `build/` output and `compile_commands.json` (CMake sets `CMAKE_EXPORT_COMPILE_COMMANDS`) for static analysis / clangd. + +- **Project-specific conventions & patterns:** + - Task functions use `tsk` prefix and provide C-compatible wrappers: e.g., `tskChassisInit()` with `extern "C"` wrapper `TSK_CHASSIS_Init` (see `Task/src/tsk_chassis.cpp`). + - Configuration and TODOs are documented inline in Chinese; follow existing FIXME/TODO markers when making changes. + - Placeholder interfaces exist (e.g., temporary `TemporaryCrtChassis` and commented `// TODO` blocks in `tsk_chassis.cpp`) — prefer integrating with the real `CrtChassis` only after confirming its API (search `chariot/inc` and `chariot/src`). + - Motor and control classes follow names like `MotorGM6020`, `MotorM3508`, `SimplePID`, `CrtModule`, `CrtChassis` — inspect `chariot/inc` for exact method signatures before calling. + +- **Integration points & external dependencies:** + - Toolchain: `gcc-arm-none-eabi` via the toolchain file in `CubeMX_BSP/cmake`. + - FreeRTOS sources are in `CubeMX_BSP/Middlewares/...` and tasks use `xTaskCreate`, `xQueueCreate`, `vTaskDelayUntil`. + - Build links to `stm32cubemx` and `gsrl` libraries in top-level [CMakeLists.txt](CMakeLists.txt). + +- **When editing code, prefer small, local changes:** + - Preserve task timing semantics: `CHASSIS_TASK_PERIOD_MS` and `vTaskDelayUntil` usage in `tsk_chassis.cpp` are critical. + - Keep C ABI wrappers intact. Update both C++ and `extern "C"` functions together. + +- **Examples to guide code edits (search & reference):** + - Read the chassis task: [Task/src/tsk_chassis.cpp](Task/src/tsk_chassis.cpp) + - See top-level build integration: [CMakeLists.txt](CMakeLists.txt) + - Toolchain/presets: [CMakePresets.json](CMakePresets.json) and [CubeMX_BSP/cmake/gcc-arm-none-eabi.cmake](CubeMX_BSP/cmake/gcc-arm-none-eabi.cmake) + +If anything here is unclear or you want more detail on a subsystem, say which file or workflow to expand and I will update this file. diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 3e192b9..b10262d 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,7 +6,7 @@ "type": "shell", "command": "${command:eide.project.build}", "group": "build", - "problemMatcher": [] + "problemMatcher": "$gcc" }, { "label": "flash", diff --git a/CMakeLists.txt b/CMakeLists.txt index 13edb70..b36cce3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,13 +51,16 @@ target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE # Add sources to executable target_sources(${CMAKE_PROJECT_NAME} PRIVATE # Add user sources here - Task/src/tsk_test.cpp + chariot/src/crt_chassis.cpp + chariot/src/crt_module.cpp + Task/src/tsk_chassis.cpp ) # Add include paths target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE # Add user defined include paths Task/inc + chariot/inc ) # Add project symbols (macros) diff --git a/CubeMX_BSP/.mxproject b/CubeMX_BSP/.mxproject index 0def190..b868274 100644 --- a/CubeMX_BSP/.mxproject +++ b/CubeMX_BSP/.mxproject @@ -1,5 +1,5 @@ [PreviousLibFiles] -LibFiles=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_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_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.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_ll_gpio.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_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.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_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_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_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_rng.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.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_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.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_rtc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;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_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.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_ll_gpio.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_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.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_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_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_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_rng.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.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\cachel1_armv7.h;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm55.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_cm85.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\core_starmc1.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\pac_armv81.h;Drivers\CMSIS\Include\pmu_armv8.h;Drivers\CMSIS\Include\tz_context.h; +LibFiles=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_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_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.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_ll_gpio.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_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.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_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_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_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_rng.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.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_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.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_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_rtc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;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_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.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_ll_gpio.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_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.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_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_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_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_rng.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rtc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rtc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.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\cachel1_armv7.h;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm55.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_cm85.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\core_starmc1.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\pac_armv81.h;Drivers\CMSIS\Include\pmu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedKeilFiles] SourceFiles=..\Src\main.c;..\Src\gpio.c;..\Src\freertos.c;..\Src\adc.c;..\Src\can.c;..\Src\crc.c;..\Src\dma.c;..\Src\i2c.c;..\Src\rng.c;..\Src\rtc.c;..\Src\spi.c;..\Src\tim.c;..\Src\usart.c;..\Src\usb_device.c;..\Src\usbd_conf.c;..\Src\usbd_desc.c;..\Src\usbd_cdc_if.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;..\Src\stm32f4xx_hal_timebase_tim.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_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_rtc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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;..\\Src\system_stm32f4xx.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_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_rtc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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;..\\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; @@ -7,7 +7,7 @@ HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\I CDefines=USE_HAL_DRIVER;STM32F407xx;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousUsedCMakes] -SourceFiles=Src\main.c;Src\gpio.c;Src\freertos.c;Src\adc.c;Src\can.c;Src\crc.c;Src\dma.c;Src\i2c.c;Src\rng.c;Src\rtc.c;Src\spi.c;Src\tim.c;Src\usart.c;Src\usb_device.c;Src\usbd_conf.c;Src\usbd_desc.c;Src\usbd_cdc_if.c;Src\stm32f4xx_it.c;Src\stm32f4xx_hal_msp.c;Src\stm32f4xx_hal_timebase_tim.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_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_rtc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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;Src\system_stm32f4xx.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_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_rtc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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;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; +SourceFiles=Src\main.c;Src\gpio.c;Src\freertos.c;Src\adc.c;Src\can.c;Src\crc.c;Src\dma.c;Src\i2c.c;Src\rng.c;Src\rtc.c;Src\spi.c;Src\tim.c;Src\usart.c;Src\usb_device.c;Src\usbd_conf.c;Src\usbd_desc.c;Src\usbd_cdc_if.c;Src\stm32f4xx_it.c;Src\stm32f4xx_hal_msp.c;Src\stm32f4xx_hal_timebase_tim.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_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_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_rtc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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;Src\system_stm32f4xx.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_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_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_rtc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.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;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; 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\GCC\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;Inc; CDefines=USE_HAL_DRIVER;STM32F407xx;USE_HAL_DRIVER;USE_HAL_DRIVER; diff --git a/CubeMX_BSP/GMStdRobotLib.ioc b/CubeMX_BSP/GMStdRobotLib.ioc index 306a512..9c6651d 100644 --- a/CubeMX_BSP/GMStdRobotLib.ioc +++ b/CubeMX_BSP/GMStdRobotLib.ioc @@ -105,6 +105,7 @@ Dma.USART6_TX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.USART6_TX.5.PeriphInc=DMA_PINC_DISABLE Dma.USART6_TX.5.Priority=DMA_PRIORITY_MEDIUM Dma.USART6_TX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode +FREERTOS.FootprintOK=true FREERTOS.INCLUDE_eTaskGetState=1 FREERTOS.INCLUDE_pcTaskGetTaskName=1 FREERTOS.INCLUDE_uxTaskGetStackHighWaterMark=1 @@ -117,8 +118,8 @@ FREERTOS.INCLUDE_xTaskAbortDelay=1 FREERTOS.INCLUDE_xTaskGetCurrentTaskHandle=1 FREERTOS.INCLUDE_xTaskGetHandle=1 FREERTOS.INCLUDE_xTimerPendFunctionCall=1 -FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,INCLUDE_vTaskDelayUntil,INCLUDE_eTaskGetState,INCLUDE_uxTaskGetStackHighWaterMark,INCLUDE_xQueueGetMutexHolder,INCLUDE_xSemaphoreGetMutexHolder,INCLUDE_pcTaskGetTaskName,INCLUDE_xTaskGetCurrentTaskHandle,INCLUDE_xTimerPendFunctionCall,INCLUDE_xEventGroupSetBitFromISR,INCLUDE_xTaskAbortDelay,INCLUDE_xTaskGetHandle,INCLUDE_vTaskCleanUpResources -FREERTOS.Tasks01=test,24,128,test_task,As weak,NULL,Dynamic,NULL,NULL +FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,INCLUDE_vTaskDelayUntil,INCLUDE_eTaskGetState,INCLUDE_uxTaskGetStackHighWaterMark,INCLUDE_xQueueGetMutexHolder,INCLUDE_xSemaphoreGetMutexHolder,INCLUDE_pcTaskGetTaskName,INCLUDE_xTaskGetCurrentTaskHandle,INCLUDE_xTimerPendFunctionCall,INCLUDE_xEventGroupSetBitFromISR,INCLUDE_xTaskAbortDelay,INCLUDE_xTaskGetHandle,INCLUDE_vTaskCleanUpResources,FootprintOK +FREERTOS.Tasks01=chassis,24,1024,chassis_task,As weak,NULL,Static,chassisBuffer,chassisControlBlock FREERTOS.configTOTAL_HEAP_SIZE=24576 File.Version=6 I2C1.I2C_Mode=I2C_Fast @@ -233,8 +234,8 @@ Mcu.PinsNb=68 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F407IGHx -MxCube.Version=6.15.0 -MxDb.Version=DB.6.0.150 +MxCube.Version=6.16.1 +MxDb.Version=DB.6.0.161 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.CAN1_RX0_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true NVIC.CAN2_RX0_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true @@ -404,6 +405,13 @@ PC9.GPIO_Pu=GPIO_PULLUP PC9.Locked=true PC9.Mode=I2C PC9.Signal=I2C3_SDA +PCC.Checker=false +PCC.Line=STM32F407/417 +PCC.MCU=STM32F407I(E-G)Hx +PCC.PartNumber=STM32F407IGHx +PCC.Series=STM32F4 +PCC.Temperature=25 +PCC.Vdd=3.3 PD0.Locked=true PD0.Mode=CAN_Activate PD0.Signal=CAN1_RX @@ -525,6 +533,7 @@ ProjectManager.DeletePrevious=true ProjectManager.DeviceId=STM32F407IGHx ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.3 ProjectManager.FreePins=false +ProjectManager.FreePinsContext= ProjectManager.HalAssertFull=false ProjectManager.HeapSize=0x2000 ProjectManager.KeepUserCode=true diff --git a/CubeMX_BSP/Src/freertos.c b/CubeMX_BSP/Src/freertos.c index af1176d..dfe46ae 100644 --- a/CubeMX_BSP/Src/freertos.c +++ b/CubeMX_BSP/Src/freertos.c @@ -29,6 +29,7 @@ /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ +typedef StaticTask_t osStaticThreadDef_t; /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ @@ -47,11 +48,16 @@ /* USER CODE BEGIN Variables */ /* USER CODE END Variables */ -/* Definitions for test */ -osThreadId_t testHandle; -const osThreadAttr_t test_attributes = { - .name = "test", - .stack_size = 128 * 4, +/* Definitions for chassis */ +osThreadId_t chassisHandle; +uint32_t chassisBuffer[ 1024 ]; +osStaticThreadDef_t chassisControlBlock; +const osThreadAttr_t chassis_attributes = { + .name = "chassis", + .cb_mem = &chassisControlBlock, + .cb_size = sizeof(chassisControlBlock), + .stack_mem = &chassisBuffer[0], + .stack_size = sizeof(chassisBuffer), .priority = (osPriority_t) osPriorityNormal, }; @@ -60,7 +66,7 @@ const osThreadAttr_t test_attributes = { /* USER CODE END FunctionPrototypes */ -void test_task(void *argument); +void chassis_task(void *argument); extern void MX_USB_DEVICE_Init(void); void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ @@ -92,8 +98,8 @@ void MX_FREERTOS_Init(void) { /* USER CODE END RTOS_QUEUES */ /* Create the thread(s) */ - /* creation of test */ - testHandle = osThreadNew(test_task, NULL, &test_attributes); + /* creation of chassis */ + chassisHandle = osThreadNew(chassis_task, NULL, &chassis_attributes); /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ @@ -105,24 +111,24 @@ void MX_FREERTOS_Init(void) { } -/* USER CODE BEGIN Header_test_task */ +/* USER CODE BEGIN Header_chassis_task */ /** - * @brief Function implementing the test thread. + * @brief Function implementing the chassis thread. * @param argument: Not used * @retval None */ -/* USER CODE END Header_test_task */ -__weak void test_task(void *argument) +/* USER CODE END Header_chassis_task */ +__weak void chassis_task(void *argument) { /* init code for USB_DEVICE */ MX_USB_DEVICE_Init(); - /* USER CODE BEGIN test_task */ + /* USER CODE BEGIN chassis_task */ /* Infinite loop */ for(;;) { osDelay(1); } - /* USER CODE END test_task */ + /* USER CODE END chassis_task */ } /* Private application code --------------------------------------------------*/ diff --git a/CubeMX_BSP/cmake/stm32cubemx/CMakeLists.txt b/CubeMX_BSP/cmake/stm32cubemx/CMakeLists.txt index 6a5ff54..9d4d1bd 100644 --- a/CubeMX_BSP/cmake/stm32cubemx/CMakeLists.txt +++ b/CubeMX_BSP/cmake/stm32cubemx/CMakeLists.txt @@ -72,7 +72,6 @@ set(STM32_Drivers_Src ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c ${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c diff --git a/Task/src/tsk_chassis.cpp b/Task/src/tsk_chassis.cpp new file mode 100644 index 0000000..f414d6c --- /dev/null +++ b/Task/src/tsk_chassis.cpp @@ -0,0 +1,284 @@ +/** + ******************************************************************************* + * @file : tsk_chassis.cpp + * @brief : 舵轮底盘控制任务 + ******************************************************************************* + * @attention + * + * 本文件实现舵轮底盘的 FreeRTOS 任务逻辑,主要负责: + * - 周期性运行底盘控制循环 + * - 读取测试输入或遥控指令 + * - 调用底盘控制器更新舵轮状态 + * + * 该任务作为系统调度层的一部分,不包含具体运动学或底层驱动实现。 + * + * Copyright (c) 2025 GMaster + * All rights reserved. + * + ******************************************************************************* + */ + +/* Includes ------------------------------------------------------------------*/ +#include "CubeMX_BSP/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h" +#include "CubeMX_BSP/Middlewares/Third_Party/FreeRTOS/Source/include/task.h" +#include "para_chassis.hpp" +#include +#include +/* TODO: 等 crt_chassis.hpp 完成后替换为正式头文件 */ +// #include "crt_chassis.hpp" + +/* 临时底盘接口(等待人员A完成正式接口) */ +class TemporaryCrtChassis { +private: + bool m_initialized; + +public: + TemporaryCrtChassis() : m_initialized(false) {} + + /* 模拟初始化函数 */ + void init() { + m_initialized = true; + } + + void setCmd(float vx, float vy, float wz) { + if (!m_initialized) return; + // 空实现,等待正式接口 + } + + void update(float dt) { + if (!m_initialized) return; + // 空实现,等待正式接口 + } + /* 检查是否初始化成功 */ + bool isReady() const { + return m_initialized; + } +}; + +/* Typedef -------------------------------------------------------------------*/ +typedef enum { + MODE_NORMAL = 0, + MODE_SMALL_GYRO, + MODE_STOP, + MODE_COUNT +} ChassisMode_t; + +/* 错误标志位定义 */ +typedef enum { + ERROR_NONE = 0, + ERROR_CHASSIS_NOT_READY = (1 << 0), + ERROR_INVALID_MODE = (1 << 1), +} ChassisError_t; + +/* Define --------------------------------------------------------------------*/ +#define CHASSIS_TASK_PERIOD_MS 1 +#define CHASSIS_TASK_STACK_SIZE 512 +#define CHASSIS_TASK_PRIORITY 5 +/* Macro ---------------------------------------------------------------------*/ + +/* Variables -----------------------------------------------------------------*/ +static class TemporaryCrtChassis { +private: + bool m_initialized; + +public: + TemporaryCrtChassis() : m_initialized(false) {} + + void init() { m_initialized = true; } + + void setCmd(float vx, float vy, float wz) { + if (!m_initialized) return; + // 空实现,等待正式接口 + } + + void update(float dt) { + if (!m_initialized) return; + // 空实现,等待正式接口 + } + bool isReady() const { + return m_initialized; + } +} g_chassis; + +static ChassisMode_t g_currentMode = MODE_NORMAL;// 默认停止状态 +static uint32_t g_errorFlags = ERROR_NONE; +static bool g_initialized = false; + +/* Function prototypes -------------------------------------------------------*/ +static void vChassisTask(void *pvParameters); +static void setChassisModeInternal(ChassisMode_t mode); +static void updateErrorFlags(void); + + +/* User code -----------------------------------------------------------------*/ +/** + * @brief 内部模式设置函数 + * @param mode: 目标模式 + * @note 模式切换时的特殊处理应在此函数中实现 + */ +static void setChassisModeInternal(ChassisMode_t mode) { + if (mode >= MODE_COUNT) { + g_errorFlags |= ERROR_INVALID_MODE; + return; + } + + ChassisMode_t prevMode = g_currentMode; + g_currentMode = mode; + + /* 模式切换时的特殊处理 */ + if (mode == MODE_STOP) { + // 立即发送停止指令,确保安全 + g_chassis.setCmd(0.0f, 0.0f, 0.0f); + } + + /* TODO: 根据实际需求添加模式切换处理 + * 例如: + * 1. NORMAL -> SMALL_GYRO: 需要平滑过渡 + * 2. SMALL_GYRO -> NORMAL: 需要停止自旋 + */ +} + +/** + * @brief 更新错误标志 + */ +static void updateErrorFlags(void) { + g_errorFlags = ERROR_NONE; + + if (!g_chassis.isReady()) { + g_errorFlags |= ERROR_CHASSIS_NOT_READY; + } + + if (g_currentMode >= MODE_COUNT) { + g_errorFlags |= ERROR_INVALID_MODE; + } +} + +/** + * @brief 获取速度指令 + * @param vx: 输出X方向速度 + * @param vy: 输出Y方向速度 + * @param wz: 输出角速度 + * @note 根据当前模式生成速度指令 + * + * 速度指令来源: + * 1. NORMAL模式:应从遥控器/上位机获取(TODO:等待接口) + * 2. SMALL_GYRO模式:固定角速度自旋 + * 3. STOP模式:零速 + */ +static void getVelocityCommand(float &vx, float &vy, float &wz) { + switch (g_currentMode) { + case MODE_NORMAL: + /* TODO: 此处应从遥控器/决策层获取真实速度指令 + * 当前使用测试值,等待实际接口 + */ + vx = 0.5f; // 测试值 + vy = 0.0f; // 测试值 + wz = 0.5f; // 测试值 + break; + + case MODE_SMALL_GYRO: + /* 小陀螺模式:原地旋转 */ + vx = 0.0f; + vy = 0.0f; + wz = 3.14f; // π rad/s ≈ 180°/s + break; + + case MODE_STOP: + default: + /* 停止模式或无效模式:零速 */ + vx = 0.0f; + vy = 0.0f; + wz = 0.0f; + break; + } +} + +/** + * @brief 底盘任务主函数 + */ +static void vChassisTask(void *pvParameters) { + TickType_t xLastWakeTime = xTaskGetTickCount(); + const TickType_t xPeriod = pdMS_TO_TICKS(CHASSIS_TASK_PERIOD_MS); + + // 初始化底盘 + g_chassis.init(); + g_initialized = true; + + // 测试:模式切换计数器 + uint32_t modeTestCounter = 0; + const uint32_t MODE_TEST_INTERVAL = 3000; // 3秒切换一次模式 + + for (;;) { + // 更新错误标志 + updateErrorFlags(); + + // 检查底盘是否就绪 + if (!g_chassis.isReady()) { + // 底盘未就绪,等待下一个周期 + vTaskDelayUntil(&xLastWakeTime, xPeriod); + continue; + } + + // 测试:自动切换模式(仅用于调试,实际应由外部控制) + modeTestCounter += CHASSIS_TASK_PERIOD_MS; + if (modeTestCounter >= MODE_TEST_INTERVAL) { + modeTestCounter = 0; + ChassisMode_t nextMode = static_cast( + (g_currentMode + 1) % MODE_COUNT + ); + setChassisModeInternal(nextMode); + } + + // 获取速度指令 + float vx = 0.0f, vy = 0.0f, wz = 0.0f; + getVelocityCommand(vx, vy, wz); + + /* TODO: 此处可添加指令滤波或限幅 + * 例如: + * 1. 加速度限制 + * 2. 速度限幅 + * 3. 指令平滑 + */ + + // 调用底盘控制接口 + g_chassis.setCmd(vx, vy, wz); + g_chassis.update(CHASSIS_TASK_PERIOD_MS / 1000.0f); + + /* 等待下一个周期 */ + vTaskDelayUntil(&xLastWakeTime, xPeriod); + } +} + +/** + * @brief 底盘任务初始化 + */ +void tskChassisInit(void) { + xTaskCreate(vChassisTask, + "ChassisTask", + CHASSIS_TASK_STACK_SIZE, + NULL, + CHASSIS_TASK_PRIORITY, + NULL); +} + +/* C语言兼容接口 */ +extern "C" { + void TSK_CHASSIS_Init(void) { + tskChassisInit(); + } + + /* 最小化的外部接口 */ + void TSK_CHASSIS_SetMode(uint8_t mode) { + if (mode < MODE_COUNT) { + setChassisModeInternal(static_cast(mode)); + } + } + + uint8_t TSK_CHASSIS_GetMode(void) { + return static_cast(g_currentMode); + } + + uint32_t TSK_CHASSIS_GetError(void) { + return g_errorFlags; + } +} \ No newline at end of file diff --git a/Task/src/tsk_test.cpp b/Task/src/tsk_test.cpp deleted file mode 100644 index 9165a38..0000000 --- a/Task/src/tsk_test.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/** - ****************************************************************************** - * @file : tsk_test.cpp - * @brief : 测试任务 - ****************************************************************************** - * @attention - * - * Copyright (c) 2025 GMaster - * All rights reserved. - * - ****************************************************************************** - */ -/* Includes ------------------------------------------------------------------*/ -#include "dvc_motor.hpp" -#include "dvc_remotecontrol.hpp" -#include "drv_spi.h" -#include "dvc_imu.hpp" - -/* Define --------------------------------------------------------------------*/ -// PID -SimplePID::PIDParam param = { - 10.0f, // Kp - 0.0f, // Ki - 500.0f, // Kd - 10.0f, // outputLimit - 0.0f // intergralLimit -}; -SimplePID myPID(SimplePID::PID_POSITION, param); -// Motor -MotorDM4310 motor(1, 0, 3.1415926f, 40, 15, &myPID); -// RemoteControl -Dr16RemoteControl dr16; - -/* Variables -----------------------------------------------------------------*/ - -/* Function prototypes -------------------------------------------------------*/ -extern "C" void dr16ITCallback(uint8_t *Buffer, uint16_t Length); -extern "C" void can1RxCallback(can_rx_message_t *pRxMsg); -inline void transmitMotorsControlData(); - -/* User code -----------------------------------------------------------------*/ - -/** - * @brief 测试任务 - * @param argument 任务参数 - */ -extern "C" void test_task(void *argument) -{ - CAN_Init(&hcan1, can1RxCallback); // 初始化CAN1 - UART_Init(&huart3, dr16ITCallback, 36); // 初始化DR16串口 - TickType_t taskLastWakeTime = xTaskGetTickCount(); // 获取任务开始时间 - while (1) { - motor.openloopControl(0.0f); - transmitMotorsControlData(); - vTaskDelayUntil(&taskLastWakeTime, 1); // 确保任务以定周期1ms运行 - } -} - -/** - * @brief DR16接收中断回调函数 - * @param Buffer 接收缓冲区 - * @param Length 接收数据长度 - */ -extern "C" void dr16ITCallback(uint8_t *Buffer, uint16_t Length) -{ - dr16.receiveRxDataFromISR(Buffer); -} - -extern "C" void can1RxCallback(can_rx_message_t *pRxMsg) -{ - motor.decodeCanRxMessageFromISR(pRxMsg); -} - -/** - * @brief 发送电机控制数据 - */ -inline void transmitMotorsControlData() -{ - const uint8_t *data = motor.getMotorControlData(); - uint32_t send_mail_box; - HAL_CAN_AddTxMessage(&hcan1, motor.getMotorControlHeader(), data, &send_mail_box); -} diff --git a/chariot/inc/crt_chassis.hpp b/chariot/inc/crt_chassis.hpp new file mode 100644 index 0000000..f23462b --- /dev/null +++ b/chariot/inc/crt_chassis.hpp @@ -0,0 +1,33 @@ +/** + ******************************************************************************* + * @file : crt_chassis.hpp + * @brief : 舵轮底盘控制器接口定义 + ******************************************************************************* + * @attention + * + * 本文件定义舵轮底盘(Chassis)的对外控制接口,用于接收底盘速度指令 + * (vx, vy, wz),并统一管理多个舵轮模块的运动学分配与控制更新。 + * + * 该文件仅包含接口与类声明,不包含任何任务调度或硬件相关实现, + * 由 Task 层周期性调用。 + * + * Copyright (c) 2025 GMaster + * All rights reserved. + * + ******************************************************************************* + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#pragma once + +/* Includes ------------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions prototypes ---------------------------------------------*/ + +/* Defines -------------------------------------------------------------------*/ diff --git a/chariot/inc/crt_module.hpp b/chariot/inc/crt_module.hpp new file mode 100644 index 0000000..cf03b7e --- /dev/null +++ b/chariot/inc/crt_module.hpp @@ -0,0 +1,86 @@ +/** + ******************************************************************************* + * @file : crt_module.hpp + * @brief : 单舵轮模块接口定义 + ******************************************************************************* + * @attention + * + * 本文件定义单个舵轮模块(Module)的控制接口。 + * 一个舵轮模块通常包含: + * - 转向电机(Steer) + * - 驱动电机(Drive) + * + * 该模块负责根据目标角度与目标速度完成舵轮自身的控制更新, + * 不感知整车运动学,仅接受底盘分配后的目标量。 + * + * Copyright (c) 2025 GMaster + * All rights reserved. + * + ******************************************************************************* + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#pragma once + +/* Includes ------------------------------------------------------------------*/ +#include +#include "dvc_motor.hpp" + +/* Exported types ------------------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions prototypes ---------------------------------------------*/ + +/* Defines -------------------------------------------------------------------*/ + +/** + * @brief 单个舵轮模块类 + * @note 仅负责舵轮自身的执行层控制,不包含整车运动学与任务调度 + */ +class CrtModule +{ +public: + /** + * @brief 构造函数 + * @param steerMotor 舵向电机对象(GM6020) + * @param driveMotor 驱动电机对象(M3508) + * @note 电机对象需在外部完成 Controller 绑定与 CAN 接收配置 + */ + CrtModule(MotorGM6020 *steerMotor, MotorM3508 *driveMotor); + + /** + * @brief 设置舵轮目标指令 + * @param targetAngle 目标舵向角(rad,连续角度) + * @param targetSpeed 目标驱动角速度(rad/s) + */ + void setTarget(float targetAngle, float targetSpeed); + + /** + * @brief 更新舵轮模块控制 + * @param dt 控制周期时间(s) + * @note 该函数应被周期性调用 + */ + void update(float dt); + +private: + /* -------- 电机对象 -------- */ + MotorGM6020 *m_steerMotor; // 转向电机(GM6020) + MotorM3508 *m_driveMotor; // 驱动电机(M3508) + + /* -------- 目标指令 -------- */ + float targetAngle; // 目标舵向角(rad,连续) + float targetSpeed; // 目标驱动角速度(rad/s) + + /* -------- 角度状态 -------- */ + float currentAngle; // 当前连续舵向角(rad) + float lastRawAngle; // 上一次原始角度(rad,0~2π) + float angleAccumulated; // 连续角度累计量(rad) + +private: + /* -------- 工具函数 -------- */ + float wrapToPi(float angle); + float wrapTo0To2Pi(float angle); +}; diff --git a/chariot/inc/para_chassis.hpp b/chariot/inc/para_chassis.hpp new file mode 100644 index 0000000..30f5f34 --- /dev/null +++ b/chariot/inc/para_chassis.hpp @@ -0,0 +1,118 @@ +/** + ******************************************************************************* + * @file : para_chassis.hpp + * @brief : 舵轮底盘参数定义 + ******************************************************************************* + * @attention + * + * 本文件集中定义舵轮底盘相关的静态参数,包括但不限于: + * - 轮距、轴距等几何参数 + * - 舵轮模块安装位置 + * - 电机与编码器相关配置 + * - 控制器参数(PID 等) + * + * 本文件仅用于参数配置,不包含任何控制逻辑代码。 + * + * Copyright (c) 2025 GMaster + * All rights reserved. + * + ******************************************************************************* + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#pragma once + +/* Includes ------------------------------------------------------------------*/ +#include +#include "alg_pid.hpp" + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief 舵轮编号(逆时针) + * @note 0=左前(FL), 1=左后(BL), 2=右后(BR), 3=右前(FR) + */ +enum class ChassisWheelID : uint8_t +{ + FrontLeft = 0, // FL + BackLeft = 1, // BL + BackRight = 2, // BR + FrontRight = 3, // FR + WheelCount +}; + +/* Exported constants --------------------------------------------------------*/ + +/* ====================== 底盘几何参数 ====================== */ + +/** + * @brief 底盘前后轮距的一半 + * @note 单位:m + */ +static constexpr float halfWheelBase = 0.10f; + +/** + * @brief 底盘左右轮距的一半 + * @note 单位:m + */ +static constexpr float halfTrackWidth = 0.10f; + +/** + * @brief 轮子半径 + * @note 单位:m + */ +static constexpr float wheelRadius = 0.03f; + +/* ====================== 舵向电机(GM6020)参数 ====================== */ + +/** + * @brief 舵向电机角度环 PID 参数 + * @note 单位:rad + */ +static constexpr SimplePID::PIDParam steerPidParam = { + .Kp = 8.0f, + .Ki = 0.0f, + .Kd = 0.1f, + .outputLimit = 16000.0f, + .intergralLimit = 3000.0f +}; + +/** + * @brief 舵向电机机械零点偏移(GM6020) + * @note 顺序严格对应编号 0~3(FL, BL, BR, FR) + * @attention + * 舵向零点仅通过 GM6020 的 encoderOffset 处理, + * Module / Chassis 层不得再进行角度补偿 + */ +static constexpr uint16_t steerZeroOffset[4] = { + 0, // [0] FL 左前 + 0, // [1] BL 左后 + 0, // [2] BR 右后 + 0 // [3] FR 右前 +}; + +/* ====================== 驱动电机(M3508)参数 ====================== */ + +/** + * @brief 驱动电机速度环 PID 参数 + * @note 单位:rad/s + */ +static constexpr SimplePID::PIDParam drivePidParam = { + .Kp = 10.0f, + .Ki = 0.0f, + .Kd = 0.0f, + .outputLimit = 16000.0f, + .intergralLimit = 3000.0f +}; + +/** + * @brief M3508 驱动电机减速比 + * @note 若使用 19:1 减速箱,则填写 19 + */ +static constexpr uint8_t driveGearboxRatio = 19; + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions prototypes ---------------------------------------------*/ + +/* Defines -------------------------------------------------------------------*/ diff --git a/chariot/src/crt_chassis.cpp b/chariot/src/crt_chassis.cpp new file mode 100644 index 0000000..00b3b26 --- /dev/null +++ b/chariot/src/crt_chassis.cpp @@ -0,0 +1,34 @@ +/** + ******************************************************************************* + * @file : crt_chassis.cpp + * @brief : 舵轮底盘控制器实现 + ******************************************************************************* + * @attention + * + * 本文件实现舵轮底盘控制器的具体逻辑,包括: + * - 底盘速度指令的接收与保存 + * - 舵轮运动学计算 + * - 多舵轮模块的统一更新与调度 + * + * 本文件不包含 FreeRTOS 任务循环,不直接读取遥控或传感器数据, + * 仅作为底盘功能逻辑模块,由 Task 层调用。 + * + * Copyright (c) 2025 GMaster + * All rights reserved. + * + ******************************************************************************* + */ + +/* Includes ------------------------------------------------------------------*/ + +/* Typedef -------------------------------------------------------------------*/ + +/* Define --------------------------------------------------------------------*/ + +/* Macro ---------------------------------------------------------------------*/ + +/* Variables -----------------------------------------------------------------*/ + +/* Function prototypes -------------------------------------------------------*/ + +/* User code -----------------------------------------------------------------*/ diff --git a/chariot/src/crt_module.cpp b/chariot/src/crt_module.cpp new file mode 100644 index 0000000..e414283 --- /dev/null +++ b/chariot/src/crt_module.cpp @@ -0,0 +1,153 @@ +/** + ******************************************************************************* + * @file : crt_module.cpp + * @brief : 单舵轮模块控制实现 + ******************************************************************************* + * @attention + * + * 本文件实现单个舵轮模块的具体控制逻辑,包括: + * - 转向角度控制 + * - 驱动速度控制 + * - 舵轮最短转向与方向优化(如启用) + * + * 本模块不涉及底盘整体运动学与任务调度, + * 由底盘控制器统一调用。 + * + * Copyright (c) 2025 GMaster + * All rights reserved. + * + ******************************************************************************* + */ + +/* Includes ------------------------------------------------------------------*/ +#include "crt_module.hpp" +#include + +/* Typedef -------------------------------------------------------------------*/ + +/* Define --------------------------------------------------------------------*/ +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +/* Macro ---------------------------------------------------------------------*/ + +/* Variables -----------------------------------------------------------------*/ + +/* Function prototypes -------------------------------------------------------*/ + +/* User code -----------------------------------------------------------------*/ + +CrtModule::CrtModule(MotorGM6020 *steerMotor, MotorM3508 *driveMotor) +{ + /* 绑定电机对象(外部需确保非空) */ + m_steerMotor = steerMotor; + m_driveMotor = driveMotor; + + /* 初始化目标指令 */ + targetAngle = 0.0f; + targetSpeed = 0.0f; + + /* 初始化角度状态 */ + currentAngle = 0.0f; + lastRawAngle = 0.0f; + angleAccumulated = 0.0f; +} + +void CrtModule::setTarget(float targetAngle, float targetSpeed) +{ + /* 保存目标指令,不在此处进行任何处理 */ + this->targetAngle = targetAngle; + this->targetSpeed = targetSpeed; +} + +void CrtModule::update(float dt) +{ + /* ====================== 0. 基本保护 ====================== */ + if (m_steerMotor == nullptr || m_driveMotor == nullptr) + { + return; + } + + /* ====================== 1. 读取舵向原始角度(0 ~ 2π) ====================== */ + /* GSRL: getCurrentAngle() 返回 rad 且范围 [0, 2PI) */ + float rawAngle = m_steerMotor->getCurrentAngle(); + + /* ====================== 2. 构建连续舵向角 ====================== */ + float deltaAngle = rawAngle - lastRawAngle; + + /* 处理跨越 0 / 2π 边界产生的角度跳变 */ + if (deltaAngle > M_PI) + { + deltaAngle -= 2.0f * M_PI; + } + else if (deltaAngle < -M_PI) + { + deltaAngle += 2.0f * M_PI; + } + + angleAccumulated += deltaAngle; + currentAngle = angleAccumulated; + lastRawAngle = rawAngle; + + /* ====================== 3. 最短转向与方向优化 ====================== */ + /* 先将误差压到 (-π, π] */ + float angleError = wrapToPi(targetAngle - currentAngle); + + /* 默认驱动目标不反向 */ + float driveSpeedCmd = targetSpeed; + + /* 若误差超过 ±90°,执行 π 翻转并反向驱动轮方向 */ + if (angleError > (M_PI * 0.5f)) + { + angleError -= M_PI; + driveSpeedCmd = -driveSpeedCmd; + } + else if (angleError < -(M_PI * 0.5f)) + { + angleError += M_PI; + driveSpeedCmd = -driveSpeedCmd; + } + + /* ====================== 4. 将“最短误差”转回“电机目标角” ====================== */ + /* 电机接口 setTargetAngle() 期望目标角为 [0, 2π),所以这里构造一个“就近目标角” */ + float optimizedTargetAngleContinuous = currentAngle + angleError; + float optimizedTargetAngleWrapped = wrapTo0To2Pi(optimizedTargetAngleContinuous); + + /* ====================== 5. 舵向角度闭环(GM6020) ====================== */ + m_steerMotor->setTargetAngle(optimizedTargetAngleWrapped); + (void)m_steerMotor->angleClosedloopControl(); /* 生成电机控制数据 */ + + /* ====================== 6. 驱动速度闭环(M3508) ====================== */ + /* GSRL: getCurrentAngularVelocity() 为 rad/s,建议 targetSpeed 同口径 */ + m_driveMotor->setTargetAngularVelocity(driveSpeedCmd); + (void)m_driveMotor->angularVelocityClosedloopControl(); /* 生成电机控制数据 */ + + /* ====================== 7. 说明 ====================== */ + /* 本模块不发送 CAN,只更新电机对象的控制数据;发送由既有的 CAN/Task 统一完成 */ +} + +float CrtModule::wrapToPi(float angle) +{ + while (angle > M_PI) + { + angle -= 2.0f * M_PI; + } + while (angle <= -M_PI) + { + angle += 2.0f * M_PI; + } + return angle; +} + +float CrtModule::wrapTo0To2Pi(float angle) +{ + /* 将角度映射到 [0, 2π) */ + float twoPi = 2.0f * (float)M_PI; + float wrapped = std::fmod(angle, twoPi); + if (wrapped < 0.0f) + { + wrapped += twoPi; + } + return wrapped; +}