| | |
| | | # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` |
| | | # should NOT be excluded as they contain compiler settings and other important |
| | | # information for Eclipse / Flash Builder. |
| | | /STM32H743/MDK-ARM/STM32H743/*.crf |
| | | /STM32H743/MDK-ARM/STM32H743/*.d |
| | | /STM32H743/MDK-ARM/STM32H743/*.o |
| | | /STM32H743/MDK-ARM/STM32H743/*.htm |
| | | /STM32H743/MDK-ARM/STM32H743/*.axf |
| | |
| | | [PreviousLibFiles] |
| | | LibFiles=Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.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;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.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;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.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;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h743xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;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_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; |
| | | LibFiles=Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.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;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.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;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_tim_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_cortex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_rcc_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_bus.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_rcc.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_crs.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_system.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_utils.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_flash_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_gpio_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_gpio.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_hsem.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_dma_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_dmamux.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_mdma.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_pwr_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_pwr.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_def.h;Drivers\STM32H7xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_i2c_ex.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_exti.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_tim.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_usart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_ll_lpuart.h;Drivers\STM32H7xx_HAL_Driver\Inc\stm32h7xx_hal_uart_ex.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;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h743xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Include\system_stm32h7xx.h;Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c; |
| | | |
| | | [PreviousUsedKeilFiles] |
| | | SourceFiles=..\Core\Src\main.c;..\Core\Src\freertos.c;..\Core\Src\stm32h7xx_it.c;..\Core\Src\stm32h7xx_hal_msp.c;..\Core\Src\stm32h7xx_hal_timebase_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.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;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\Core\Src\system_stm32h7xx.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c;..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.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;..\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\system_stm32h7xx.c;..\Core\Src\system_stm32h7xx.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; |
| | | HeaderPath=..\Drivers\STM32H7xx_HAL_Driver\Inc;..\Drivers\STM32H7xx_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;..\Drivers\CMSIS\Device\ST\STM32H7xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc; |
| | | CDefines=USE_PWR_LDO_SUPPLY;USE_PWR_LDO_SUPPLY;USE_HAL_DRIVER;STM32H743xx;USE_HAL_DRIVER;USE_HAL_DRIVER; |
| | | |
| | | [] |
| | | SourceFiles=;; |
| | | |
| | | [PreviousGenFiles] |
| | | AdvancedFolderStructure=true |
| | | HeaderFileListSize=4 |
| | |
| | | #include "UDPClient.h" |
| | | #include "bluetooth.h" |
| | | #include "TCPClient.h" |
| | | #include "SBUS.h" |
| | | #include "pwm_ctrol.h" |
| | | static osSemaphoreId_t g_semaphoreHandle = NULL; |
| | | extern uint8_t restart_num; |
| | | void IdleTask(void) |
| | |
| | | UDPClient_Init(); |
| | | TCPClient_Init(); |
| | | BT_Init(); |
| | | SBUS_Init(); |
| | | while (1) |
| | | { |
| | | //HIDO_UINT32 timeout = HIDO_TimerGetNearestTimeout(1000); |
| | |
| | | } |
| | | DBG_Poll(); |
| | | BT_Poll(); |
| | | SBUS_Poll(); |
| | | HIDO_ATLitePoll(); |
| | | Internet_Poll(); |
| | | GPS_Poll(); |
| | |
| | | |
| | | uint16_t version = g_com_map[VERSION]; |
| | | |
| | | // printf("[BOOT] Version: %u\r\n", version); |
| | | // printf("[BOOT] DeviceID: %u\r\n", dev_id); |
| | | // printf("[BOOT] UDP Server: %u.%u.%u.%u:%u\r\n", ip0, ip1, ip2, ip3, udp_port); |
| | | // printf("[BOOT] TCP Server: %u.%u.%u.%u:%u\r\n", tip0, tip1, tip2, tip3, tcp_port); |
| | | HIDO_Debug2("[BOOT] Version: %u\r\n", version); |
| | | HIDO_Debug2("[BOOT] DeviceID: %u\r\n", dev_id); |
| | | HIDO_Debug2("[BOOT] UDP Server: %u.%u.%u.%u:%u\r\n", ip0, ip1, ip2, ip3, udp_port); |
| | | HIDO_Debug2("[BOOT] TCP Server: %u.%u.%u.%u:%u\r\n", tip0, tip1, tip2, tip3, tcp_port); |
| | | } |
| | | TaskHandle_t xTaskHandle = NULL; |
| | | |
| | |
| | | void USART2_IRQHandler(void); |
| | | void USART3_IRQHandler(void); |
| | | void DMA1_Stream7_IRQHandler(void); |
| | | void UART4_IRQHandler(void); |
| | | void DMA2_Stream0_IRQHandler(void); |
| | | void USART6_IRQHandler(void); |
| | | void TIM17_IRQHandler(void); |
| | | /* USER CODE BEGIN EFP */ |
| | |
| | | TIM_HandleTypeDef htim3; |
| | | TIM_HandleTypeDef htim4; |
| | | |
| | | UART_HandleTypeDef huart4; |
| | | UART_HandleTypeDef huart1; |
| | | UART_HandleTypeDef huart2; |
| | | UART_HandleTypeDef huart3; |
| | | UART_HandleTypeDef huart6; |
| | | DMA_HandleTypeDef hdma_uart4_rx; |
| | | DMA_HandleTypeDef hdma_usart1_rx; |
| | | DMA_HandleTypeDef hdma_usart1_tx; |
| | | DMA_HandleTypeDef hdma_usart2_rx; |
| | |
| | | static void MX_TIM3_Init(void); |
| | | static void MX_USART6_UART_Init(void); |
| | | static void MX_TIM4_Init(void); |
| | | static void MX_UART4_Init(void); |
| | | void StartDefaultTask(void *argument); |
| | | |
| | | /* USER CODE BEGIN PFP */ |
| | |
| | | MX_TIM3_Init(); |
| | | MX_USART6_UART_Init(); |
| | | MX_TIM4_Init(); |
| | | MX_UART4_Init(); |
| | | /* USER CODE BEGIN 2 */ |
| | | UART6_StartReceive(); |
| | | Uart_Register(UART_ID_DBG, &huart1); |
| | | Uart_Register(UART_ID_GPS, &huart2); |
| | | Uart_Register(UART_ID_4G, &huart3); |
| | | Uart_Register(UART_ID_SBUS, &huart4); |
| | | Uart_Register(UART_ID_BT, &huart6); |
| | | |
| | | HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); // MOTOR_TIM |
| | |
| | | htim1.Init.Period = 13513; |
| | | htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
| | | htim1.Init.RepetitionCounter = 0; |
| | | htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; |
| | | htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; |
| | | if (HAL_TIM_Base_Init(&htim1) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | |
| | | htim3.Init.CounterMode = TIM_COUNTERMODE_UP; |
| | | htim3.Init.Period = 13513; |
| | | htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
| | | htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; |
| | | htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; |
| | | if (HAL_TIM_Base_Init(&htim3) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | |
| | | htim4.Init.CounterMode = TIM_COUNTERMODE_UP; |
| | | htim4.Init.Period = 65535; |
| | | htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
| | | htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; |
| | | htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; |
| | | if (HAL_TIM_Base_Init(&htim4) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_BOTHEDGE; |
| | | sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; |
| | | sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; |
| | | sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; |
| | | sConfigIC.ICFilter = 0xF; |
| | |
| | | /* USER CODE BEGIN TIM4_Init 2 */ |
| | | HAL_TIM_Base_Start_IT(&htim4); // ������ʱ����ʹ���ж� |
| | | /* USER CODE END TIM4_Init 2 */ |
| | | |
| | | } |
| | | |
| | | /** |
| | | * @brief UART4 Initialization Function |
| | | * @param None |
| | | * @retval None |
| | | */ |
| | | static void MX_UART4_Init(void) |
| | | { |
| | | |
| | | /* USER CODE BEGIN UART4_Init 0 */ |
| | | |
| | | /* USER CODE END UART4_Init 0 */ |
| | | |
| | | /* USER CODE BEGIN UART4_Init 1 */ |
| | | |
| | | /* USER CODE END UART4_Init 1 */ |
| | | huart4.Instance = UART4; |
| | | huart4.Init.BaudRate = 100000; |
| | | huart4.Init.WordLength = UART_WORDLENGTH_9B; |
| | | huart4.Init.StopBits = UART_STOPBITS_2; |
| | | huart4.Init.Parity = UART_PARITY_EVEN; |
| | | huart4.Init.Mode = UART_MODE_TX_RX; |
| | | huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
| | | huart4.Init.OverSampling = UART_OVERSAMPLING_16; |
| | | huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; |
| | | huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1; |
| | | huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXINVERT_INIT; |
| | | huart4.AdvancedInit.RxPinLevelInvert = UART_ADVFEATURE_RXINV_ENABLE; |
| | | if (HAL_UART_Init(&huart4) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | /* USER CODE BEGIN UART4_Init 2 */ |
| | | |
| | | /* USER CODE END UART4_Init 2 */ |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | /* DMA controller clock enable */ |
| | | __HAL_RCC_DMA1_CLK_ENABLE(); |
| | | __HAL_RCC_DMA2_CLK_ENABLE(); |
| | | |
| | | /* DMA interrupt init */ |
| | | /* DMA1_Stream0_IRQn interrupt configuration */ |
| | |
| | | /* DMA1_Stream7_IRQn interrupt configuration */ |
| | | HAL_NVIC_SetPriority(DMA1_Stream7_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(DMA1_Stream7_IRQn); |
| | | /* DMA2_Stream0_IRQn interrupt configuration */ |
| | | HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn); |
| | | |
| | | } |
| | | |
| | |
| | | /* USER CODE BEGIN Includes */ |
| | | |
| | | /* USER CODE END Includes */ |
| | | extern DMA_HandleTypeDef hdma_uart4_rx; |
| | | |
| | | extern DMA_HandleTypeDef hdma_usart1_rx; |
| | | |
| | | extern DMA_HandleTypeDef hdma_usart1_tx; |
| | |
| | | /* Peripheral clock enable */ |
| | | __HAL_RCC_TIM2_CLK_ENABLE(); |
| | | /* TIM2 interrupt Init */ |
| | | HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); |
| | | HAL_NVIC_SetPriority(TIM2_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(TIM2_IRQn); |
| | | /* USER CODE BEGIN TIM2_MspInit 1 */ |
| | | |
| | |
| | | /* Peripheral clock enable */ |
| | | __HAL_RCC_TIM3_CLK_ENABLE(); |
| | | /* TIM3 interrupt Init */ |
| | | HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); |
| | | HAL_NVIC_SetPriority(TIM3_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(TIM3_IRQn); |
| | | /* USER CODE BEGIN TIM3_MspInit 1 */ |
| | | |
| | |
| | | HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); |
| | | |
| | | /* TIM4 interrupt Init */ |
| | | HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0); |
| | | HAL_NVIC_SetPriority(TIM4_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(TIM4_IRQn); |
| | | /* USER CODE BEGIN TIM4_MspInit 1 */ |
| | | |
| | |
| | | { |
| | | GPIO_InitTypeDef GPIO_InitStruct = {0}; |
| | | RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; |
| | | if(huart->Instance==USART1) |
| | | if(huart->Instance==UART4) |
| | | { |
| | | /* USER CODE BEGIN UART4_MspInit 0 */ |
| | | |
| | | /* USER CODE END UART4_MspInit 0 */ |
| | | |
| | | /** Initializes the peripherals clock |
| | | */ |
| | | PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART4; |
| | | PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1; |
| | | if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | |
| | | /* Peripheral clock enable */ |
| | | __HAL_RCC_UART4_CLK_ENABLE(); |
| | | |
| | | __HAL_RCC_GPIOA_CLK_ENABLE(); |
| | | /**UART4 GPIO Configuration |
| | | PA11 ------> UART4_RX |
| | | PA12 ------> UART4_TX |
| | | */ |
| | | GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; |
| | | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| | | GPIO_InitStruct.Pull = GPIO_NOPULL; |
| | | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
| | | GPIO_InitStruct.Alternate = GPIO_AF6_UART4; |
| | | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| | | |
| | | /* UART4 DMA Init */ |
| | | /* UART4_RX Init */ |
| | | hdma_uart4_rx.Instance = DMA2_Stream0; |
| | | hdma_uart4_rx.Init.Request = DMA_REQUEST_UART4_RX; |
| | | hdma_uart4_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; |
| | | hdma_uart4_rx.Init.PeriphInc = DMA_PINC_DISABLE; |
| | | hdma_uart4_rx.Init.MemInc = DMA_MINC_ENABLE; |
| | | hdma_uart4_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; |
| | | hdma_uart4_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; |
| | | hdma_uart4_rx.Init.Mode = DMA_CIRCULAR; |
| | | hdma_uart4_rx.Init.Priority = DMA_PRIORITY_LOW; |
| | | hdma_uart4_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; |
| | | if (HAL_DMA_Init(&hdma_uart4_rx) != HAL_OK) |
| | | { |
| | | Error_Handler(); |
| | | } |
| | | |
| | | __HAL_LINKDMA(huart,hdmarx,hdma_uart4_rx); |
| | | |
| | | /* UART4 interrupt Init */ |
| | | HAL_NVIC_SetPriority(UART4_IRQn, 5, 0); |
| | | HAL_NVIC_EnableIRQ(UART4_IRQn); |
| | | /* USER CODE BEGIN UART4_MspInit 1 */ |
| | | |
| | | /* USER CODE END UART4_MspInit 1 */ |
| | | } |
| | | else if(huart->Instance==USART1) |
| | | { |
| | | /* USER CODE BEGIN USART1_MspInit 0 */ |
| | | |
| | |
| | | */ |
| | | void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) |
| | | { |
| | | if(huart->Instance==USART1) |
| | | if(huart->Instance==UART4) |
| | | { |
| | | /* USER CODE BEGIN UART4_MspDeInit 0 */ |
| | | |
| | | /* USER CODE END UART4_MspDeInit 0 */ |
| | | /* Peripheral clock disable */ |
| | | __HAL_RCC_UART4_CLK_DISABLE(); |
| | | |
| | | /**UART4 GPIO Configuration |
| | | PA11 ------> UART4_RX |
| | | PA12 ------> UART4_TX |
| | | */ |
| | | HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12); |
| | | |
| | | /* UART4 DMA DeInit */ |
| | | HAL_DMA_DeInit(huart->hdmarx); |
| | | |
| | | /* UART4 interrupt DeInit */ |
| | | HAL_NVIC_DisableIRQ(UART4_IRQn); |
| | | /* USER CODE BEGIN UART4_MspDeInit 1 */ |
| | | |
| | | /* USER CODE END UART4_MspDeInit 1 */ |
| | | } |
| | | else if(huart->Instance==USART1) |
| | | { |
| | | /* USER CODE BEGIN USART1_MspDeInit 0 */ |
| | | |
| | |
| | | extern TIM_HandleTypeDef htim2; |
| | | extern TIM_HandleTypeDef htim3; |
| | | extern TIM_HandleTypeDef htim4; |
| | | extern DMA_HandleTypeDef hdma_uart4_rx; |
| | | extern DMA_HandleTypeDef hdma_usart1_rx; |
| | | extern DMA_HandleTypeDef hdma_usart1_tx; |
| | | extern DMA_HandleTypeDef hdma_usart2_rx; |
| | |
| | | extern DMA_HandleTypeDef hdma_usart3_tx; |
| | | extern DMA_HandleTypeDef hdma_usart6_rx; |
| | | extern DMA_HandleTypeDef hdma_usart6_tx; |
| | | extern UART_HandleTypeDef huart4; |
| | | extern UART_HandleTypeDef huart1; |
| | | extern UART_HandleTypeDef huart2; |
| | | extern UART_HandleTypeDef huart3; |
| | |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles UART4 global interrupt. |
| | | */ |
| | | void UART4_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN UART4_IRQn 0 */ |
| | | |
| | | /* USER CODE END UART4_IRQn 0 */ |
| | | HAL_UART_IRQHandler(&huart4); |
| | | /* USER CODE BEGIN UART4_IRQn 1 */ |
| | | |
| | | /* USER CODE END UART4_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles DMA2 stream0 global interrupt. |
| | | */ |
| | | void DMA2_Stream0_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN DMA2_Stream0_IRQn 0 */ |
| | | |
| | | /* USER CODE END DMA2_Stream0_IRQn 0 */ |
| | | HAL_DMA_IRQHandler(&hdma_uart4_rx); |
| | | /* USER CODE BEGIN DMA2_Stream0_IRQn 1 */ |
| | | |
| | | /* USER CODE END DMA2_Stream0_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles USART6 global interrupt. |
| | | */ |
| | | void USART6_IRQHandler(void) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /******************************************************************************* |
| | | * File Name : SBUS.c |
| | | * Description : SBUS RC receiver protocol parser implementation |
| | | * Created on : 2025-11-13 |
| | | * Author : Auto-generated |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * Include Files * |
| | | *******************************************************************************/ |
| | | #include "SBUS.h" |
| | | #include "Uart.h" |
| | | #include "stm32h7xx_hal.h" |
| | | #include "stm32h7xx_hal_uart.h" |
| | | #include "stm32h7xx_hal_dma.h" |
| | | #include <string.h> |
| | | #include "pwm_ctrol.h" |
| | | |
| | | /******************************************************************************* |
| | | * Macro * |
| | | *******************************************************************************/ |
| | | #define SBUS_TIMEOUT_MS 100 |
| | | |
| | | // è°è¯å¼å
³ï¼è®¾ç½®ä¸º 1 å¯ç¨è°è¯è¾åºï¼éè¦ printf éå®åï¼ï¼è®¾ç½®ä¸º 0 ç¦ç¨ |
| | | #define SBUS_DEBUG_ENABLE 0 |
| | | |
| | | #if SBUS_DEBUG_ENABLE |
| | | #define SBUS_DEBUG_PRINT(...) printf(__VA_ARGS__) |
| | | #else |
| | | #define SBUS_DEBUG_PRINT(...) ((void)0) |
| | | #endif |
| | | |
| | | /******************************************************************************* |
| | | * Global Variables * |
| | | *******************************************************************************/ |
| | | // SBUS æ¥æ¶ç¼å²åº (DMA åå
¥) |
| | | static HIDO_UINT8 g_au8SBUSRxBuf[SBUS_UART_RX_BUF_SIZE] = {0}; |
| | | |
| | | // SBUS å½åééæ°æ® |
| | | static ST_SBUSData g_stSBUSData = {0}; |
| | | |
| | | // 临æ¶è§£æç¼å²åº (ç¨äºå¸§è¾¹ç对é½) |
| | | static HIDO_UINT8 g_au8ParseBuf[SBUS_FRAME_SIZE] = {0}; |
| | | static HIDO_UINT8 g_u8ParseBufIdx = 0; |
| | | |
| | | // è°è¯ç»è®¡ |
| | | static HIDO_UINT32 g_u32DebugPollCount = 0; |
| | | static HIDO_UINT32 g_u32DebugLastDmaRemaining = 0; |
| | | // SBUS failsafe active flag |
| | | static volatile HIDO_UINT8 g_bSBUSFailsafeActive = 0; |
| | | |
| | | /******************************************************************************* |
| | | * Local Function * |
| | | *******************************************************************************/ |
| | | |
| | | /** |
| | | * @brief è§£æå个 SBUS 帧 (25 åè) |
| | | * @param _pu8Frame: å¸§æ°æ®æé (å¿
é¡»æå宿´ç 25 åè) |
| | | * @return HIDO_TRUE: è§£ææå, HIDO_FALSE: æ ¡éªå¤±è´¥ |
| | | */ |
| | | static HIDO_INT32 SBUS_ParseFrame(const HIDO_UINT8 *_pu8Frame) |
| | | { |
| | | // 1. æ ¡éªå¸§å¤´å帧尾 |
| | | if (_pu8Frame[0] != SBUS_HEADER || _pu8Frame[24] != SBUS_FOOTER) |
| | | { |
| | | g_stSBUSData.m_u32ErrorCount++; |
| | | return HIDO_FALSE; |
| | | } |
| | | |
| | | // 2. æå 16 个 11-bit éé (bit-packed in bytes 1~22) |
| | | // SBUS åè®®: 176 bits (16 channels * 11 bits) åå¨å¨ 22 åèä¸ |
| | | // Channel layout (LSB first): |
| | | // Byte 1: Ch0[0:7] |
| | | // Byte 2: Ch0[8:10] | Ch1[0:4] |
| | | // Byte 3: Ch1[5:10] | Ch2[0:1] |
| | | // ... (便¬¡ç±»æ¨) |
| | | |
| | | g_stSBUSData.m_au16Channels[0] = (HIDO_UINT16)((_pu8Frame[1] | _pu8Frame[2] << 8) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[1] = (HIDO_UINT16)((_pu8Frame[2] >> 3 | _pu8Frame[3] << 5) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[2] = (HIDO_UINT16)((_pu8Frame[3] >> 6 | _pu8Frame[4] << 2 | _pu8Frame[5] << 10) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[3] = (HIDO_UINT16)((_pu8Frame[5] >> 1 | _pu8Frame[6] << 7) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[4] = (HIDO_UINT16)((_pu8Frame[6] >> 4 | _pu8Frame[7] << 4) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[5] = (HIDO_UINT16)((_pu8Frame[7] >> 7 | _pu8Frame[8] << 1 | _pu8Frame[9] << 9) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[6] = (HIDO_UINT16)((_pu8Frame[9] >> 2 | _pu8Frame[10] << 6) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[7] = (HIDO_UINT16)((_pu8Frame[10] >> 5 | _pu8Frame[11] << 3) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[8] = (HIDO_UINT16)((_pu8Frame[12] | _pu8Frame[13] << 8) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[9] = (HIDO_UINT16)((_pu8Frame[13] >> 3 | _pu8Frame[14] << 5) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[10] = (HIDO_UINT16)((_pu8Frame[14] >> 6 | _pu8Frame[15] << 2 | _pu8Frame[16] << 10) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[11] = (HIDO_UINT16)((_pu8Frame[16] >> 1 | _pu8Frame[17] << 7) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[12] = (HIDO_UINT16)((_pu8Frame[17] >> 4 | _pu8Frame[18] << 4) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[13] = (HIDO_UINT16)((_pu8Frame[18] >> 7 | _pu8Frame[19] << 1 | _pu8Frame[20] << 9) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[14] = (HIDO_UINT16)((_pu8Frame[20] >> 2 | _pu8Frame[21] << 6) & 0x07FF); |
| | | g_stSBUSData.m_au16Channels[15] = (HIDO_UINT16)((_pu8Frame[21] >> 5 | _pu8Frame[22] << 3) & 0x07FF); |
| | | |
| | | // 3. æåæ å¿ä½ (Byte 23) |
| | | // Bit 0: CH17 digital |
| | | // Bit 1: CH18 digital |
| | | // Bit 2: Frame Lost |
| | | // Bit 3: Failsafe |
| | | g_stSBUSData.m_u8Ch17 = (_pu8Frame[23] & 0x01) ? 1 : 0; |
| | | g_stSBUSData.m_u8Ch18 = (_pu8Frame[23] & 0x02) ? 1 : 0; |
| | | g_stSBUSData.m_u8FrameLost = (_pu8Frame[23] & 0x04) ? 1 : 0; |
| | | g_stSBUSData.m_u8Failsafe = (_pu8Frame[23] & 0x08) ? 1 : 0; |
| | | |
| | | // 4. æ´æ°æ¶é´æ³åè®¡æ° |
| | | g_stSBUSData.m_u32LastUpdateTick = HAL_GetTick(); |
| | | g_stSBUSData.m_u32FrameCount++; |
| | | |
| | | // è§£ææååç«å³è§¦å PWM æ§å¶ï¼æå°å»¶è¿ï¼ |
| | | // åæ¶æ¸
é¤ failsafe æ å¿ï¼å¦æä¹å触åè¿ï¼ |
| | | if (g_bSBUSFailsafeActive) |
| | | { |
| | | g_bSBUSFailsafeActive = 0; |
| | | } |
| | | SBUS_Control_PWM(); |
| | | |
| | | return HIDO_TRUE; |
| | | } |
| | | |
| | | /** |
| | | * @brief ä» DMA ç¼å²åºä¸æ¥æ¾å¹¶è§£æ SBUS 帧 |
| | | * @param _pu8Buf: DMA ç¼å²åºæé |
| | | * @param _u32Len: å¯è¯»æ°æ®é¿åº¦ |
| | | * @return æ |
| | | */ |
| | | static HIDO_VOID SBUS_ProcessBuffer(const HIDO_UINT8 *_pu8Buf, HIDO_UINT32 _u32Len) |
| | | { |
| | | static HIDO_UINT32 s_u32TotalBytesProcessed = 0; |
| | | |
| | | for (HIDO_UINT32 i = 0; i < _u32Len; i++) |
| | | { |
| | | HIDO_UINT8 byte = _pu8Buf[i]; |
| | | s_u32TotalBytesProcessed++; |
| | | |
| | | // ç¶ææº: 寻æ¾å¸§å¤´ 0x0F |
| | | if (g_u8ParseBufIdx == 0) |
| | | { |
| | | if (byte == SBUS_HEADER) |
| | | { |
| | | g_au8ParseBuf[g_u8ParseBufIdx++] = byte; |
| | | } |
| | | // å¦å丢å¼é帧头åè |
| | | } |
| | | else |
| | | { |
| | | g_au8ParseBuf[g_u8ParseBufIdx++] = byte; |
| | | |
| | | // æ¶æ»¡ 25 åèåå°è¯è§£æ |
| | | if (g_u8ParseBufIdx >= SBUS_FRAME_SIZE) |
| | | { |
| | | SBUS_ParseFrame(g_au8ParseBuf); |
| | | g_u8ParseBufIdx = 0; // éç½®ç¶ææº |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /******************************************************************************* |
| | | * Global Function * |
| | | *******************************************************************************/ |
| | | |
| | | /** |
| | | * @brief åå§å SBUS æ¥æ¶æ¨¡å |
| | | */ |
| | | HIDO_INT32 SBUS_Init(HIDO_VOID) |
| | | { |
| | | HIDO_INT32 ret; |
| | | ST_UartInit stUartInit; |
| | | UART_HandleTypeDef *pUart = NULL; |
| | | |
| | | // å
æ£æ¥ UART æ¯å¦å·²ç»æ³¨å |
| | | ret = Uart_GetHandle(UART_ID_SBUS, (HIDO_VOID **)&pUart); |
| | | |
| | | if (pUart == NULL) |
| | | { |
| | | return HIDO_FALSE; |
| | | } |
| | | |
| | | // åå§å SBUS æ°æ®ç»æ |
| | | memset(&g_stSBUSData, 0, sizeof(g_stSBUSData)); |
| | | memset(g_au8ParseBuf, 0, sizeof(g_au8ParseBuf)); |
| | | memset(g_au8SBUSRxBuf, 0, sizeof(g_au8SBUSRxBuf)); |
| | | g_u8ParseBufIdx = 0; |
| | | g_u32DebugPollCount = 0; |
| | | g_u32DebugLastDmaRemaining = 0; |
| | | |
| | | // é
ç½® UART4 æ¥æ¶ (DMA 模å¼) |
| | | stUartInit.m_eRxMode = UART_RX_MODE_DMA; |
| | | stUartInit.m_pu8RxBuf = g_au8SBUSRxBuf; |
| | | stUartInit.m_u32RxBufSize = SBUS_UART_RX_BUF_SIZE; |
| | | |
| | | // ä¸ä½¿ç¨åéåè½ (SBUS ä»
å忥æ¶) |
| | | stUartInit.m_eTxMode = UART_TX_MODE_POLL; |
| | | stUartInit.m_pu8TxBuf = NULL; |
| | | stUartInit.m_u32TxBufSize = 0; |
| | | stUartInit.m_u32TxQueueMemberCnt = 0; |
| | | stUartInit.m_fnRxISR = NULL; |
| | | |
| | | ret = Uart_Init(UART_ID_SBUS, &stUartInit); |
| | | if (ret != HIDO_OK) |
| | | { |
| | | return HIDO_FALSE; |
| | | } |
| | | |
| | | // è·å UART 奿以éªè¯åå§å |
| | | ret = Uart_GetHandle(UART_ID_SBUS, (HIDO_VOID **)&pUart); |
| | | if (ret != HIDO_OK || pUart == NULL) |
| | | { |
| | | return HIDO_FALSE; |
| | | } |
| | | |
| | | return HIDO_TRUE; |
| | | } |
| | | |
| | | /** |
| | | * @brief SBUS è½®è¯¢å½æ° (主循ç¯è°ç¨) |
| | | */ |
| | | HIDO_VOID SBUS_Poll(HIDO_VOID) |
| | | { |
| | | UART_HandleTypeDef *pUart = NULL; |
| | | HIDO_INT32 ret; |
| | | |
| | | g_u32DebugPollCount++; |
| | | |
| | | // è·å UART 奿 |
| | | ret = Uart_GetHandle(UART_ID_SBUS, (HIDO_VOID **)&pUart); |
| | | if (ret != HIDO_OK || pUart == NULL) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | // æ£æ¥ DMA 奿 |
| | | if (pUart->hdmarx == NULL) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | // è®¡ç® DMA å·²æ¥æ¶çæ°æ®é |
| | | // DMA->CNDTR è¿åå©ä½æªä¼ è¾çæ°æ®ä¸ªæ°ï¼å æ¤å·²æ¥æ¶ = BufSize - CNDTR |
| | | HIDO_UINT32 dmaRemaining = __HAL_DMA_GET_COUNTER(pUart->hdmarx); |
| | | HIDO_UINT32 receivedBytes = SBUS_UART_RX_BUF_SIZE - dmaRemaining; |
| | | |
| | | g_u32DebugLastDmaRemaining = dmaRemaining; |
| | | |
| | | // å¤çæ°æ¥æ¶çæ°æ® |
| | | // 注æ: è¿é使ç¨ç¯å½¢ç¼å²åºç®å读åçç¥ (éåçå¨æè½®è¯¢) |
| | | static HIDO_UINT32 s_u32LastProcessedIdx = 0; |
| | | |
| | | if (receivedBytes > s_u32LastProcessedIdx) |
| | | { |
| | | HIDO_UINT32 newBytes = receivedBytes - s_u32LastProcessedIdx; |
| | | SBUS_ProcessBuffer(&g_au8SBUSRxBuf[s_u32LastProcessedIdx], newBytes); |
| | | s_u32LastProcessedIdx = receivedBytes; |
| | | } |
| | | |
| | | // å¤ç DMA ç¯å½¢åç» (å½ CNDTR éè½½æ¶) |
| | | if (receivedBytes < s_u32LastProcessedIdx) |
| | | { |
| | | // å
å¤çç¼å²åºå°¾é¨ |
| | | HIDO_UINT32 tailBytes = SBUS_UART_RX_BUF_SIZE - s_u32LastProcessedIdx; |
| | | if (tailBytes > 0) |
| | | { |
| | | SBUS_ProcessBuffer(&g_au8SBUSRxBuf[s_u32LastProcessedIdx], tailBytes); |
| | | } |
| | | // åå¤çç¼å²åºå¤´é¨ |
| | | if (receivedBytes > 0) |
| | | { |
| | | SBUS_ProcessBuffer(&g_au8SBUSRxBuf[0], receivedBytes); |
| | | } |
| | | s_u32LastProcessedIdx = receivedBytes; |
| | | } |
| | | |
| | | // Failsafe: 妿è·ç¦»ä¸æ¬¡ææå¸§è¶
è¿ 1000msï¼è§¦åä¸ç«è宽ï¼1500usï¼ |
| | | if (!g_bSBUSFailsafeActive) |
| | | { |
| | | HIDO_UINT32 currentTick = HAL_GetTick(); |
| | | HIDO_UINT32 elapsed = currentTick - g_stSBUSData.m_u32LastUpdateTick; |
| | | if (elapsed >= 1000) |
| | | { |
| | | // 触å䏿¬¡æ§ failsafeï¼å°è½¬åä¸çµæºè宽设为ä¸ç« 1500us |
| | | Set_Steering_Pulse(1500); |
| | | Set_Motor_Pulse(1500); |
| | | g_bSBUSFailsafeActive = 1; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @brief è·å SBUS ééæ°æ®å¯æ¬ |
| | | */ |
| | | HIDO_INT32 SBUS_GetData(ST_SBUSData *_pstData) |
| | | { |
| | | if (_pstData == NULL) |
| | | { |
| | | return HIDO_FALSE; |
| | | } |
| | | |
| | | // æ£æ¥ä¿¡å·æ¯å¦ææ (æè¿ 100ms å
æ¶å°å¸§) |
| | | if (!SBUS_IsSignalValid(SBUS_TIMEOUT_MS)) |
| | | { |
| | | return HIDO_FALSE; |
| | | } |
| | | |
| | | // æ·è´æ°æ® (ç®åæ·è´, è¥é线ç¨å®å
¨å¯å 临çåº) |
| | | memcpy(_pstData, &g_stSBUSData, sizeof(ST_SBUSData)); |
| | | return HIDO_TRUE; |
| | | } |
| | | |
| | | /** |
| | | * @brief è·åå个ééå¼ |
| | | */ |
| | | HIDO_UINT16 SBUS_GetChannel(HIDO_UINT8 _u8Channel) |
| | | { |
| | | if (_u8Channel >= SBUS_NUM_CHANNELS) |
| | | { |
| | | return SBUS_CENTER_VALUE; |
| | | } |
| | | |
| | | if (!SBUS_IsSignalValid(SBUS_TIMEOUT_MS)) |
| | | { |
| | | return SBUS_CENTER_VALUE; |
| | | } |
| | | |
| | | return g_stSBUSData.m_au16Channels[_u8Channel]; |
| | | } |
| | | |
| | | /** |
| | | * @brief è·åæ°åééç¶æ |
| | | */ |
| | | HIDO_UINT8 SBUS_GetDigitalChannel(HIDO_UINT8 _u8DigitalChannel) |
| | | { |
| | | if (!SBUS_IsSignalValid(SBUS_TIMEOUT_MS)) |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | if (_u8DigitalChannel == 17) |
| | | { |
| | | return g_stSBUSData.m_u8Ch17; |
| | | } |
| | | else if (_u8DigitalChannel == 18) |
| | | { |
| | | return g_stSBUSData.m_u8Ch18; |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | /** |
| | | * @brief æ£æ¥ SBUS ä¿¡å·æ¯å¦ææ |
| | | */ |
| | | HIDO_INT32 SBUS_IsSignalValid(HIDO_UINT32 _u32TimeoutMs) |
| | | { |
| | | HIDO_UINT32 currentTick = HAL_GetTick(); |
| | | HIDO_UINT32 elapsed = currentTick - g_stSBUSData.m_u32LastUpdateTick; |
| | | |
| | | return (elapsed < _u32TimeoutMs) ? HIDO_TRUE : HIDO_FALSE; |
| | | } |
| | | |
| | | /** |
| | | * @brief è·åæ¥æ¶ç»è®¡ä¿¡æ¯ |
| | | */ |
| | | HIDO_VOID SBUS_GetStats(HIDO_UINT32 *_pu32FrameCount, HIDO_UINT32 *_pu32ErrorCount) |
| | | { |
| | | if (_pu32FrameCount != NULL) |
| | | { |
| | | *_pu32FrameCount = g_stSBUSData.m_u32FrameCount; |
| | | } |
| | | if (_pu32ErrorCount != NULL) |
| | | { |
| | | *_pu32ErrorCount = g_stSBUSData.m_u32ErrorCount; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @brief è°è¯å½æ°ï¼æå° SBUS ç¶æåç»è®¡ä¿¡æ¯ |
| | | */ |
| | | HIDO_VOID SBUS_PrintDebugInfo(HIDO_VOID) |
| | | { |
| | | UART_HandleTypeDef *pUart = NULL; |
| | | HIDO_INT32 ret; |
| | | |
| | | HIDO_Debug2("\r\n========== SBUS Debug Info ==========\r\n"); |
| | | HIDO_Debug2("Poll count: %u\r\n", g_u32DebugPollCount); |
| | | HIDO_Debug2("Frame count: %u\r\n", g_stSBUSData.m_u32FrameCount); |
| | | HIDO_Debug2("Error count: %u\r\n", g_stSBUSData.m_u32ErrorCount); |
| | | HIDO_Debug2("Last update: %u ms ago\r\n", |
| | | HAL_GetTick() - g_stSBUSData.m_u32LastUpdateTick); |
| | | HIDO_Debug2("Parse buf idx: %u\r\n", g_u8ParseBufIdx); |
| | | |
| | | ret = Uart_GetHandle(UART_ID_SBUS, (HIDO_VOID **)&pUart); |
| | | if (ret == HIDO_OK && pUart != NULL) |
| | | { |
| | | if (pUart->hdmarx != NULL) |
| | | { |
| | | HIDO_UINT32 dmaRemaining = __HAL_DMA_GET_COUNTER(pUart->hdmarx); |
| | | HIDO_Debug2("DMA remaining: %u\r\n", dmaRemaining); |
| | | HIDO_Debug2("DMA received: %u\r\n", SBUS_UART_RX_BUF_SIZE - dmaRemaining); |
| | | HIDO_Debug2("DMA state: %u\r\n", HAL_DMA_GetState(pUart->hdmarx)); |
| | | } |
| | | else |
| | | { |
| | | HIDO_Debug2("DMA handle: NULL!\r\n"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | HIDO_Debug2("UART handle: NULL!\r\n"); |
| | | } |
| | | |
| | | if (g_stSBUSData.m_u32FrameCount > 0) |
| | | { |
| | | HIDO_Debug2("\r\nLast frame channels:\r\n"); |
| | | for (HIDO_UINT8 i = 0; i < 8; i++) |
| | | { |
| | | HIDO_Debug2(" CH%02u: %4u", i, g_stSBUSData.m_au16Channels[i]); |
| | | if ((i + 1) % 4 == 0) HIDO_Debug2("\r\n"); |
| | | } |
| | | HIDO_Debug2(" CH17: %u, CH18: %u\r\n", |
| | | g_stSBUSData.m_u8Ch17, g_stSBUSData.m_u8Ch18); |
| | | HIDO_Debug2(" FrameLost: %u, Failsafe: %u\r\n", |
| | | g_stSBUSData.m_u8FrameLost, g_stSBUSData.m_u8Failsafe); |
| | | } |
| | | |
| | | HIDO_Debug2("\r\nRaw RX buffer (first 32 bytes):\r\n"); |
| | | for (HIDO_UINT8 i = 0; i < 32; i++) |
| | | { |
| | | HIDO_Debug2("%02X ", g_au8SBUSRxBuf[i]); |
| | | if ((i + 1) % 16 == 0) HIDO_Debug2("\r\n"); |
| | | } |
| | | HIDO_Debug2("====================================\r\n\r\n"); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /******************************************************************************* |
| | | * File Name : SBUS.h |
| | | * Description : SBUS RC receiver protocol parser for STM32H7 |
| | | * UART4 (100kbps, 8E2) + DMA reception |
| | | * Created on : 2025-11-13 |
| | | * Author : Auto-generated |
| | | *******************************************************************************/ |
| | | |
| | | #ifndef FML_SBUS_H_ |
| | | #define FML_SBUS_H_ |
| | | |
| | | /******************************************************************************* |
| | | * Include Files * |
| | | *******************************************************************************/ |
| | | #include "HIDO_TypeDef.h" |
| | | |
| | | /******************************************************************************* |
| | | * Macro * |
| | | *******************************************************************************/ |
| | | #define SBUS_FRAME_SIZE 25 // SBUS帧é¿åº¦ (åè) |
| | | #define SBUS_HEADER 0x0F // 帧头 |
| | | #define SBUS_FOOTER 0x00 // 帧尾 |
| | | #define SBUS_NUM_CHANNELS 16 // ééæ°é |
| | | #define SBUS_CHANNEL_BITS 11 // æ¯éé使° |
| | | #define SBUS_MIN_VALUE 0 // ééæå°å¼ |
| | | #define SBUS_MAX_VALUE 2047 // ééæå¤§å¼ (11-bit) |
| | | #define SBUS_CENTER_VALUE 1024 // ééä¸å¿å¼ |
| | | |
| | | // ç¼å²åºå¤§å° (建议ä¿çå¤å¸§ç©ºé´ä»¥åºå¯¹DMAç¯å½¢æ¥æ¶) |
| | | #define SBUS_UART_RX_BUF_SIZE 128 // DMA æ¥æ¶ç¼å²åº |
| | | |
| | | /******************************************************************************* |
| | | * Type Definition * |
| | | *******************************************************************************/ |
| | | |
| | | /** |
| | | * @brief SBUS ééæ°æ®ç»æ |
| | | */ |
| | | typedef struct |
| | | { |
| | | HIDO_UINT16 m_au16Channels[SBUS_NUM_CHANNELS]; // 16个ééå¼ (0~2047) |
| | | HIDO_UINT8 m_u8Ch17; // æ°åéé CH17 (0/1) |
| | | HIDO_UINT8 m_u8Ch18; // æ°åéé CH18 (0/1) |
| | | HIDO_UINT8 m_u8FrameLost; // 帧丢失æ å¿ |
| | | HIDO_UINT8 m_u8Failsafe; // 失æ§ä¿æ¤æ å¿ |
| | | HIDO_UINT32 m_u32LastUpdateTick; // æåæ´æ°æ¶å» (ms) |
| | | HIDO_UINT32 m_u32FrameCount; // ç´¯è®¡å¸§æ° |
| | | HIDO_UINT32 m_u32ErrorCount; // éè¯¯å¸§æ° |
| | | } ST_SBUSData; |
| | | |
| | | /******************************************************************************* |
| | | * Global Function * |
| | | *******************************************************************************/ |
| | | |
| | | /** |
| | | * @brief åå§å SBUS æ¥æ¶æ¨¡å |
| | | * - 注å UART4 DMA æ¥æ¶åè° |
| | | * - å¯å¨ DMA å¾ªç¯æ¥æ¶ |
| | | * @return HIDO_TRUE: æå, HIDO_FALSE: 失败 |
| | | */ |
| | | HIDO_INT32 SBUS_Init(HIDO_VOID); |
| | | |
| | | /** |
| | | * @brief SBUS è½®è¯¢å½æ° (éå¨ä¸»å¾ªç¯ä¸å®æè°ç¨) |
| | | * - æ£æ¥ DMA æ¥æ¶ç¼å²åº |
| | | * - è§£æ SBUS 帧 |
| | | * - æ´æ°ééæ°æ® |
| | | * @return æ |
| | | */ |
| | | HIDO_VOID SBUS_Poll(HIDO_VOID); |
| | | |
| | | /** |
| | | * @brief è·å SBUS ééæ°æ®å¯æ¬ (线ç¨å®å
¨) |
| | | * @param _pstData: è¾åºåæ°, å¡«å
ééæ°æ® |
| | | * @return HIDO_TRUE: æå, HIDO_FALSE: æ æææ°æ® |
| | | */ |
| | | HIDO_INT32 SBUS_GetData(ST_SBUSData *_pstData); |
| | | |
| | | /** |
| | | * @brief è·åå个ééå¼ |
| | | * @param _u8Channel: ééå· (0~15) |
| | | * @return ééå¼ (0~2047), 失败è¿å SBUS_CENTER_VALUE |
| | | */ |
| | | HIDO_UINT16 SBUS_GetChannel(HIDO_UINT8 _u8Channel); |
| | | |
| | | /** |
| | | * @brief è·åæ°åééç¶æ |
| | | * @param _u8DigitalChannel: æ°åééå· (17 æ 18) |
| | | * @return 0 æ 1, 失败è¿å 0 |
| | | */ |
| | | HIDO_UINT8 SBUS_GetDigitalChannel(HIDO_UINT8 _u8DigitalChannel); |
| | | |
| | | /** |
| | | * @brief æ£æ¥ SBUS ä¿¡å·æ¯å¦ææ (æè¿æ¯å¦æ¶å°å¸§) |
| | | * @param _u32TimeoutMs: è¶
æ¶éå¼ (ms), é»è®¤ 100ms |
| | | * @return HIDO_TRUE: ææ, HIDO_FALSE: è¶
æ¶æ ä¿¡å· |
| | | */ |
| | | HIDO_INT32 SBUS_IsSignalValid(HIDO_UINT32 _u32TimeoutMs); |
| | | |
| | | /** |
| | | * @brief è·åæ¥æ¶ç»è®¡ä¿¡æ¯ |
| | | * @param _pu32FrameCount: è¾åºç´¯è®¡å¸§æ° |
| | | * @param _pu32ErrorCount: è¾åºéè¯¯å¸§æ° |
| | | * @return æ |
| | | */ |
| | | HIDO_VOID SBUS_GetStats(HIDO_UINT32 *_pu32FrameCount, HIDO_UINT32 *_pu32ErrorCount); |
| | | |
| | | /** |
| | | * @brief è°è¯å½æ°ï¼æå° SBUS 详ç»ç¶æä¿¡æ¯ |
| | | * å
æ¬ DMA ç¶æãç¼å²åºå
容ãééå¼ç |
| | | * @return æ |
| | | */ |
| | | // SBUS Debug function (ä½¿ç¨ HIDO_Debug2 è¾åºå° UART_ID_DBG) |
| | | HIDO_VOID SBUS_PrintDebugInfo(void); |
| | | |
| | | // 声æ HIDO_Debug2 彿° |
| | | extern HIDO_INT32 HIDO_Debug2(const HIDO_CHAR *_pcFmt, ...); |
| | | |
| | | #endif /* FML_SBUS_H_ */ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # SBUS èªæ¨¡é¥æ§å¨æ¥æ¶æ¨¡å使ç¨è¯´æ |
| | | |
| | | ## æ¦è¿° |
| | | æ¬æ¨¡åå®ç°äº SBUS åè®®ï¼Futaba SBUSï¼çè§£æï¼ç¨äºæ¥æ¶èªæ¨¡é¥æ§å¨ä¿¡å·ã |
| | | |
| | | ### 硬件é
ç½® |
| | | - **UART**: UART4 (STM32H743) |
| | | - **æ³¢ç¹ç**: 100kbps |
| | | - **æ ¼å¼**: 8E2 (8 æ°æ®ä½, å¶æ ¡éª, 2 忢ä½) |
| | | - **æ¥æ¶æ¨¡å¼**: DMA å¾ªç¯æ¥æ¶ |
| | | - **ä¿¡å·åå**: å·²å¯ç¨ RX åååè½ï¼éé
SBUS ååé»è¾ï¼ |
| | | |
| | | ### åè®®è§æ ¼ |
| | | - **帧é¿åº¦**: 25 åè |
| | | - **帧头**: 0x0F |
| | | - **帧尾**: 0x00 |
| | | - **ééæ°**: 16 个模æéé (11-bit, 0~2047) + 2 个æ°åéé (CH17/CH18) |
| | | - **æ å¿ä½**: Frame LostãFailsafe |
| | | - **帧ç**: 约 7~14 ms/帧 (åå³äºåå°æº) |
| | | |
| | | --- |
| | | |
| | | ## API æ¥å£ |
| | | |
| | | ### 1. åå§å |
| | | ```c |
| | | #include "SBUS.h" |
| | | |
| | | void app_task(void *pvParameters) |
| | | { |
| | | // å¨ä»»å¡åå§åé¶æ®µè°ç¨ï¼å·²éæå° app.cï¼ |
| | | SBUS_Init(); |
| | | |
| | | while(1) |
| | | { |
| | | // 主循ç¯è½®è¯¢ |
| | | SBUS_Poll(); |
| | | // ... |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### 2. è·å宿´ééæ°æ® |
| | | ```c |
| | | ST_SBUSData sbusData; |
| | | |
| | | if (SBUS_GetData(&sbusData) == HIDO_TRUE) |
| | | { |
| | | // æåè·åæ°æ®ï¼ä¿¡å·ææï¼ |
| | | printf("CH0: %u, CH1: %u, CH2: %u\n", |
| | | sbusData.m_au16Channels[0], |
| | | sbusData.m_au16Channels[1], |
| | | sbusData.m_au16Channels[2]); |
| | | |
| | | // æ£æ¥å¤±æ§ä¿æ¤æ å¿ |
| | | if (sbusData.m_u8Failsafe) |
| | | { |
| | | printf("WARNING: Failsafe activated!\n"); |
| | | } |
| | | |
| | | // æ£æ¥å¸§ä¸¢å¤±æ å¿ |
| | | if (sbusData.m_u8FrameLost) |
| | | { |
| | | printf("WARNING: Frame lost!\n"); |
| | | } |
| | | |
| | | // æ°åéé |
| | | printf("CH17: %u, CH18: %u\n", sbusData.m_u8Ch17, sbusData.m_u8Ch18); |
| | | } |
| | | else |
| | | { |
| | | // ä¿¡å·è¶
æ¶ææ æ°æ® |
| | | printf("SBUS signal lost\n"); |
| | | } |
| | | ``` |
| | | |
| | | ### 3. è·åå个ééå¼ |
| | | ```c |
| | | // è·åæ²¹é¨éé (å设 CH2 为油é¨) |
| | | HIDO_UINT16 throttle = SBUS_GetChannel(2); // 0~2047 |
| | | |
| | | // å½ä¸åå° [-1.0, 1.0] |
| | | float throttle_normalized = (throttle - 1024.0f) / 1024.0f; |
| | | |
| | | // æ å°å°çµæºé度 (0~100%) |
| | | uint8_t motor_speed = (throttle * 100) / 2047; |
| | | ``` |
| | | |
| | | ### 4. è·åæ°åéé |
| | | ```c |
| | | // è·åå¼å
³ç¶æ (CH17 é常对åºé¥æ§å¨å¼å
³) |
| | | HIDO_UINT8 switch_state = SBUS_GetDigitalChannel(17); // 0 æ 1 |
| | | |
| | | if (switch_state == 1) |
| | | { |
| | | printf("Switch ON\n"); |
| | | } |
| | | else |
| | | { |
| | | printf("Switch OFF\n"); |
| | | } |
| | | ``` |
| | | |
| | | ### 5. æ£æ¥ä¿¡å·æææ§ |
| | | ```c |
| | | // æ£æ¥æè¿ 100ms å
æ¯å¦æ¶å° SBUS 帧 |
| | | if (SBUS_IsSignalValid(100) == HIDO_TRUE) |
| | | { |
| | | printf("SBUS signal OK\n"); |
| | | } |
| | | else |
| | | { |
| | | printf("SBUS signal LOST (timeout)\n"); |
| | | // è¿å
¥å¤±æ§ä¿æ¤æ¨¡å¼ |
| | | // ... |
| | | } |
| | | ``` |
| | | |
| | | ### 6. è·åç»è®¡ä¿¡æ¯ |
| | | ```c |
| | | HIDO_UINT32 frameCount, errorCount; |
| | | |
| | | SBUS_GetStats(&frameCount, &errorCount); |
| | | |
| | | printf("Total frames: %u, Errors: %u (%.2f%%)\n", |
| | | frameCount, errorCount, |
| | | (frameCount > 0) ? (errorCount * 100.0f / frameCount) : 0.0f); |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## æ°æ®ç»æè¯¦è§£ |
| | | |
| | | ### ST_SBUSData |
| | | ```c |
| | | typedef struct |
| | | { |
| | | HIDO_UINT16 m_au16Channels[16]; // 16 个模æéé, èå´ 0~2047 |
| | | HIDO_UINT8 m_u8Ch17; // æ°åéé 17, å¼ 0 æ 1 |
| | | HIDO_UINT8 m_u8Ch18; // æ°åéé 18, å¼ 0 æ 1 |
| | | HIDO_UINT8 m_u8FrameLost; // 帧丢失æ å¿ (åå°æºæ è®°) |
| | | HIDO_UINT8 m_u8Failsafe; // 失æ§ä¿æ¤æ å¿ (æ¥æ¶æºæ è®°) |
| | | HIDO_UINT32 m_u32LastUpdateTick; // æåæ´æ°æ¶å» (HAL_GetTick) |
| | | HIDO_UINT32 m_u32FrameCount; // ç´¯è®¡æ¥æ¶å¸§æ° |
| | | HIDO_UINT32 m_u32ErrorCount; // 累计éè¯¯å¸§æ° (帧头/å¸§å°¾æ ¡éªå¤±è´¥) |
| | | } ST_SBUSData; |
| | | ``` |
| | | |
| | | ### ééæ å°ç¤ºä¾ï¼å¸¸è§é¥æ§å¨å¸å±ï¼ |
| | | | éé | 常è§åè½ | å¼èå´ | ä¸å¿å¼ | |
| | | |------|----------|--------|--------| |
| | | | CH0 | æ¨ªæ» (Aileron) | 0~2047 | 1024 | |
| | | | CH1 | 俯仰 (Elevator) | 0~2047 | 1024 | |
| | | | CH2 | æ²¹é¨ (Throttle) | 0~2047 | 172 (æä½) | |
| | | | CH3 | æ¹å (Rudder) | 0~2047 | 1024 | |
| | | | CH4 | è¾
å©å¼å
³ 1 | 0~2047 | - | |
| | | | CH5 | è¾
å©å¼å
³ 2 | 0~2047 | - | |
| | | | ... | å
¶ä»èªå®ä¹ | 0~2047 | - | |
| | | | CH17 | æ°åå¼å
³ 1 | 0/1 | - | |
| | | | CH18 | æ°åå¼å
³ 2 | 0/1 | - | |
| | | |
| | | --- |
| | | |
| | | ## å
¸ååºç¨åºæ¯ |
| | | |
| | | ### åºæ¯1ï¼æå¨é¥æ§èåªæº |
| | | ```c |
| | | void Manual_Control_Task(void) |
| | | { |
| | | ST_SBUSData sbus; |
| | | |
| | | if (SBUS_GetData(&sbus) != HIDO_TRUE) |
| | | { |
| | | // ä¿¡å·ä¸¢å¤±ï¼åæ¢çµæº |
| | | Motor_Stop(); |
| | | return; |
| | | } |
| | | |
| | | // 失æ§ä¿æ¤è§¦åï¼åæ¢ |
| | | if (sbus.m_u8Failsafe) |
| | | { |
| | | Motor_Stop(); |
| | | return; |
| | | } |
| | | |
| | | // æåæ§å¶é (å设 CH1=åè¿/åé, CH3=å·¦å³è½¬å) |
| | | int16_t forward = (int16_t)sbus.m_au16Channels[1] - 1024; // -1024~+1023 |
| | | int16_t turn = (int16_t)sbus.m_au16Channels[3] - 1024; // -1024~+1023 |
| | | |
| | | // å½ä¸åå° [-100, 100] |
| | | int8_t forward_cmd = (forward * 100) / 1024; |
| | | int8_t turn_cmd = (turn * 100) / 1024; |
| | | |
| | | // åéå°å·®éçµæºæ§å¶å¨ |
| | | DiffDrive_SetCommand(forward_cmd, turn_cmd); |
| | | } |
| | | ``` |
| | | |
| | | ### åºæ¯2ï¼æ¨¡å¼åæ¢ï¼èªå¨/æå¨ï¼ |
| | | ```c |
| | | void Mode_Switch_Task(void) |
| | | { |
| | | static uint8_t last_switch = 0; |
| | | uint8_t current_switch = SBUS_GetDigitalChannel(17); |
| | | |
| | | // æ£æµå¼å
³ç¶æåå |
| | | if (current_switch != last_switch) |
| | | { |
| | | if (current_switch == 1) |
| | | { |
| | | // 忢å°èªå¨æ¨¡å¼ |
| | | System_SetMode(MODE_AUTO); |
| | | printf("Switched to AUTO mode\n"); |
| | | } |
| | | else |
| | | { |
| | | // 忢尿卿¨¡å¼ |
| | | System_SetMode(MODE_MANUAL); |
| | | printf("Switched to MANUAL mode\n"); |
| | | } |
| | | last_switch = current_switch; |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### åºæ¯3ï¼å¤±æ§ä¿æ¤çæ§ |
| | | ```c |
| | | void Failsafe_Monitor_Task(void) |
| | | { |
| | | static uint32_t last_valid_tick = 0; |
| | | |
| | | if (SBUS_IsSignalValid(200) == HIDO_TRUE) |
| | | { |
| | | last_valid_tick = HAL_GetTick(); |
| | | } |
| | | else |
| | | { |
| | | uint32_t lost_duration = HAL_GetTick() - last_valid_tick; |
| | | |
| | | if (lost_duration > 1000) // ä¿¡å·ä¸¢å¤±è¶
è¿ 1 ç§ |
| | | { |
| | | // 触åç´§æ¥åæ¢ |
| | | Emergency_Stop(); |
| | | printf("EMERGENCY: SBUS signal lost for %u ms\n", lost_duration); |
| | | } |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## è°è¯ä¸è¯æ |
| | | |
| | | ### æå°å®æ¶ééå¼ |
| | | ```c |
| | | void SBUS_Debug_Print(void) |
| | | { |
| | | ST_SBUSData sbus; |
| | | |
| | | if (SBUS_GetData(&sbus) == HIDO_TRUE) |
| | | { |
| | | printf("SBUS Channels:\n"); |
| | | for (uint8_t i = 0; i < 16; i++) |
| | | { |
| | | printf(" CH%02u: %4u", i, sbus.m_au16Channels[i]); |
| | | if ((i + 1) % 4 == 0) printf("\n"); |
| | | } |
| | | printf(" CH17: %u, CH18: %u\n", sbus.m_u8Ch17, sbus.m_u8Ch18); |
| | | printf(" FrameLost: %u, Failsafe: %u\n", sbus.m_u8FrameLost, sbus.m_u8Failsafe); |
| | | printf(" Stats: Frames=%u, Errors=%u\n", sbus.m_u32FrameCount, sbus.m_u32ErrorCount); |
| | | } |
| | | else |
| | | { |
| | | printf("SBUS: No signal\n"); |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### ä¿¡å·è´¨éæ£æµ |
| | | ```c |
| | | void SBUS_Quality_Check(void) |
| | | { |
| | | HIDO_UINT32 frames, errors; |
| | | SBUS_GetStats(&frames, &errors); |
| | | |
| | | if (frames > 1000) // ç´¯ç§¯è¶³å¤æ ·æ¬ |
| | | { |
| | | float error_rate = (errors * 100.0f) / frames; |
| | | |
| | | if (error_rate > 5.0f) |
| | | { |
| | | printf("WARNING: High SBUS error rate: %.2f%%\n", error_rate); |
| | | printf(" -> Check cable connection\n"); |
| | | printf(" -> Check RX pin inversion setting\n"); |
| | | } |
| | | else |
| | | { |
| | | printf("SBUS quality: Good (error rate: %.2f%%)\n", error_rate); |
| | | } |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | ### 1. ä¿¡å·åå |
| | | - SBUS å议使ç¨ååé»è¾ï¼idle high = 0V, idle low = 3.3Vï¼ |
| | | - STM32H7 UART4 å·²å¯ç¨ `UART_ADVFEATURE_RXINV_ENABLE` |
| | | - 妿æ¶å°çæ°æ®å
¨æ¯éè¯¯å¸§ï¼æ£æ¥æ¯å¦éè¦ç¦ç¨åååè½ |
| | | |
| | | ### 2. æ³¢ç¹ç容差 |
| | | - SBUS æ åæ³¢ç¹ç为 100kbps |
| | | - STM32 å
鍿¶éè¯¯å·®éæ§å¶å¨ ±2% 以å
|
| | | - 妿叧é误çé«ï¼å¯å¾®è°æ³¢ç¹ç (99000 æ 101000) |
| | | |
| | | ### 3. DMA ç¼å²åºå¤§å° |
| | | - å½å设置为 128 åèï¼å¯å®¹çº³ 5 å¸§ï¼ |
| | | - å¦æä¸»å¾ªç¯è½®è¯¢é´éè¾é¿ï¼>50msï¼ï¼å»ºè®®å¢å¤§ç¼å²åº |
| | | |
| | | ### 4. 帧çä¸å»¶è¿ |
| | | - SBUS 帧é´é约 7~14ms |
| | | - `SBUS_Poll()` åºè³å°ä»¥ 20Hz é¢çè°ç¨ï¼å½å app_task 约 74Hzï¼ |
| | | - æ§å¶å»¶è¿: éæ ·å»¶è¿ + è§£æå»¶è¿ < 20ms |
| | | |
| | | ### 5. 失æ§ä¿æ¤çç¥ |
| | | - å»ºè®®åæ¶çæ§ `m_u8Failsafe` æ å¿å `SBUS_IsSignalValid()` è¶
æ¶ |
| | | - å¤±æ§æ¶ç«å³åæ¢ææè¿å¨è¾åº |
| | | - æ¢å¤ä¿¡å·åéæå¨éæ°ä½¿è½ï¼é²æ¢æå¤å¯å¨ï¼ |
| | | |
| | | ### 6. å¤çº¿ç¨å®å
¨ |
| | | - å½åå®ç°æªä½¿ç¨ä¸´çåºä¿æ¤ |
| | | - å¦éå¨ ISR æå
¶ä»é«ä¼å
级任å¡ä¸è®¿é®ï¼éæ·»å äºæ¥é |
| | | |
| | | --- |
| | | |
| | | ## æ
éææ¥ |
| | | |
| | | | é®é¢ | å¯è½åå | è§£å³æ¹æ¡ | |
| | | |------|----------|----------| |
| | | | æ æ³æ¥æ¶æ°æ® | UART4 æªæ£ç¡®åå§å | æ£æ¥ `MX_UART4_Init()` è°ç¨é¡ºåº | |
| | | | 帧é误ç 100% | RX ä¿¡å·åå设置é误 | 忢 `UART_ADVFEATURE_RXINV` ç¶æ | |
| | | | ä¿¡å·è¶
æ¶ | åå°æºæªå¼å¯æè·ç¦»è¿è¿ | æ£æ¥é¥æ§å¨çµæºå天线 | |
| | | | ééå¼æå¨ | å¹²æ°ææ¥è§¦ä¸è¯ | æ£æ¥æ¥çº¿å±è½åæ¥å° | |
| | | | é¨åééæ æ | åå°æºééæªæ¿æ´» | æ£æ¥åå°æºééé
ç½® | |
| | | | DMA æªè§¦å | DMA åå§åæªå®æ | 确认 `HAL_UART_Receive_DMA()` å·²è°ç¨ | |
| | | |
| | | --- |
| | | |
| | | ## æ¥çº¿åè |
| | | |
| | | ### æ å SBUS æ¥å£ï¼3 çº¿ï¼ |
| | | ``` |
| | | SBUS 模å STM32H743 |
| | | --------- ---------- |
| | | GND -------> GND |
| | | 5V -------> 5V (æ VCC) |
| | | SBUS -------> UART4_RX (PA1 ææ ¹æ®å®é
å¼è) |
| | | ``` |
| | | |
| | | ### 注æ |
| | | - SBUS ä¿¡å·çµå¹³ä¸º 3.3V TTLï¼é¨å模åéè¦çµå¹³è½¬æ¢ï¼ |
| | | - ç¡®ä¿ SBUS è¾åºç«¯ä¸ STM32 RX å¼èç´è¿ï¼æ é䏿/䏿çµé»ï¼ |
| | | |
| | | --- |
| | | |
| | | ## æ©å±åè½å»ºè®® |
| | | |
| | | ### 1. ä¸ä½æ ¡å |
| | | ```c |
| | | void SBUS_CalibrateCenter(uint8_t channel) |
| | | { |
| | | uint16_t center_value = SBUS_GetChannel(channel); |
| | | // ä¿åå° Flash æé
ç½®æä»¶ |
| | | Config_SetChannelCenter(channel, center_value); |
| | | } |
| | | ``` |
| | | |
| | | ### 2. ééæ å°éå®ä¹ |
| | | ```c |
| | | typedef enum { |
| | | RC_AILERON = 0, |
| | | RC_ELEVATOR = 1, |
| | | RC_THROTTLE = 2, |
| | | RC_RUDDER = 3, |
| | | RC_SWITCH_A = 4, |
| | | RC_SWITCH_B = 5, |
| | | } E_RCChannel; |
| | | |
| | | uint16_t RC_GetMappedChannel(E_RCChannel ch) |
| | | { |
| | | return SBUS_GetChannel(g_channel_map[ch]); |
| | | } |
| | | ``` |
| | | |
| | | ### 3. ææ°æ²çº¿è°æ´ |
| | | ```c |
| | | int16_t RC_ApplyExpo(int16_t raw_value, float expo_factor) |
| | | { |
| | | float normalized = raw_value / 1024.0f; // -1.0 ~ 1.0 |
| | | float expo = expo_factor * normalized * normalized * normalized + |
| | | (1 - expo_factor) * normalized; |
| | | return (int16_t)(expo * 1024.0f); |
| | | } |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | çææ¶é´ï¼2025-11-13 |
| | | 模åçæ¬ï¼v1.0 |
| | | ç»´æ¤è
ï¼é¡¹ç®å¢é |
| | |
| | | #include "DBG.h" |
| | | #include "Uart.h" |
| | | #include "HIDO_Util.h" |
| | | #include "SBUS.h" |
| | | |
| | | #define STATE_WAIT_RISING 0 |
| | | #define STATE_WAIT_FALLING 1 |
| | |
| | | |
| | | |
| | | |
| | | // 设置ææçµæºå°æå®å ç©ºæ¯ |
| | | // �������е����ָ��ռ�ձ� |
| | | void set_all_pwm(uint16_t duty) |
| | | { |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, duty); |
| | |
| | | __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, duty); |
| | | } |
| | | |
| | | // åå·¦ï¼å轮左转ï¼åè½®å³è½¬ |
| | | // ����ǰ����ת��������ת |
| | | void set_pwm_left() |
| | | { |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 1000); // åå·¦ |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, 2000); // åå³ |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 2000); // åå·¦ |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1000); // åå³ |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 1000); // ǰ�� |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, 2000); // ǰ�� |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 2000); // ���� |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1000); // ���� |
| | | } |
| | | |
| | | // åå³ï¼åè½®å³è½¬ï¼å轮左转 |
| | | // ���ң�ǰ����ת��������ת |
| | | void set_pwm_right() |
| | | { |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 2000); // åå·¦ |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, 1000); // åå³ |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1000); // åå·¦ |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 2000); // åå³ |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 2000); // ǰ�� |
| | | __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, 1000); // ǰ�� |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1000); // ���� |
| | | __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 2000); // ���� |
| | | } |
| | | |
| | | |
| | | // æ å°å½æ°ï¼å° [-100,100] æ å°å° [1000,2000] |
| | | // ӳ�亯������ [-100,100] ӳ�䵽 [1000,2000] |
| | | uint32_t Map(int16_t input, int16_t in_min, int16_t in_max, uint32_t out_min, uint32_t out_max) |
| | | { |
| | | return (input - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; |
| | | } |
| | | // è®¾ç½®çµæº PWMï¼åè¿/åéï¼ |
| | | // ���õ�� PWM��ǰ��/���ˣ� |
| | | void Set_Motor_PWM(int16_t speed) |
| | | { |
| | | static HIDO_UINT8 l_Motor[50]; |
| | | uint32_t pulse = Map(speed, -100, 100, 1000, 2000); // -100~100 â 1000~2000 |
| | | uint32_t pulse = Map(speed, -100, 100, 1000, 2000); // -100~100 �� 1000~2000 |
| | | __HAL_TIM_SetCompare(&MOTOR_TIM, MOTOR_CHANNEL, pulse); |
| | | HIDO_UtilSnprintf((HIDO_CHAR *)l_Motor, sizeof(l_Motor), "Motor cortrol:speed=%d,pulse=%d\r\n", speed,pulse); |
| | | Uart_Send(UART_ID_DBG, (HIDO_UINT8 *)l_Motor, strlen(l_Motor)); |
| | | } |
| | | |
| | | // 设置转å PWMï¼å·¦è½¬/å³è½¬ï¼ |
| | | // ����ת�� PWM����ת/��ת�� |
| | | void Set_Steering_PWM(int16_t steer) |
| | | { |
| | | static HIDO_UINT8 l_Steering[50]; |
| | | uint32_t pulse = Map(steer, -100, 100, 1000, 2000); // -100~100 â 1000~2000 |
| | | uint32_t pulse = Map(steer, -100, 100, 1000, 2000); // -100~100 �� 1000~2000 |
| | | __HAL_TIM_SetCompare(&STEERING_TIM, STEERING_CHANNEL, pulse); |
| | | HIDO_UtilSnprintf((HIDO_CHAR *)l_Steering, sizeof(l_Steering), "Steering cortrol:steer=%d,pulse=%d\r\n", steer,pulse); |
| | | Uart_Send(UART_ID_DBG, (HIDO_UINT8 *)l_Steering, strlen(l_Steering)); |
| | |
| | | |
| | | if (capture_state == STATE_WAIT_RISING) |
| | | { |
| | | // å½åæ¯ä¸å沿 â è®°å½å¹¶åæ¢å°çå¾
ä¸é沿 |
| | | // ��ǰ�������� �� ��¼���л����ȴ��½��� |
| | | rising_time = current_time; |
| | | // åæ¢ä¸ºä¸é沿触å |
| | | htim->Instance->CCER &= ~TIM_CCER_CC1P; // ä¸å沿 |
| | | htim->Instance->CCER |= TIM_CCER_CC1NP; // å ä¸ NP 表示éåç¸ï¼å®é
åºä½¿ç¨ææ§æ§å¶å½æ° |
| | | // �л�Ϊ�½��ش��� |
| | | htim->Instance->CCER &= ~TIM_CCER_CC1P; // ������ |
| | | htim->Instance->CCER |= TIM_CCER_CC1NP; // ���� NP ��ʾ�Ƿ��ࣿʵ��Ӧʹ�ü��Կ��ƺ��� |
| | | |
| | | // æ´æ¨èä½¿ç¨ HAL 彿°è®¾ç½®ææ§ |
| | | // ���Ƽ�ʹ�� HAL �������ü��� |
| | | __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_FALLING); |
| | | |
| | | capture_state = STATE_WAIT_FALLING; |
| | | } |
| | | else if (capture_state == STATE_WAIT_FALLING) |
| | | { |
| | | // å½åæ¯ä¸é沿 â 计ç®é«çµå¹³å®½åº¦ |
| | | // ��ǰ���½��� �� ����ߵ�ƽ���� |
| | | uint32_t pulse_width = current_time - rising_time; |
| | | |
| | | if (pulse_width > 65535) // è¶
è¿æå¤§åçå¼ |
| | | if (pulse_width > 65535) // ����������ֵ |
| | | { |
| | | pulse_width = 0; // æè
æ è®°ä¸ºæ æ |
| | | pulse_width = 0; // ���߱��Ϊ��Ч |
| | | } |
| | | |
| | | //printf("High Pulse Width: %lu μs\n", pulse_width); |
| | | //printf("High Pulse Width: %lu ��s\n", pulse_width); |
| | | HIDO_UtilSnprintf((HIDO_CHAR *)l_pulse_width, sizeof(l_pulse_width), "pulse_width=%d\r\n", pulse_width); |
| | | Uart_Send(UART_ID_DBG, (HIDO_UINT8 *)l_pulse_width, strlen(l_pulse_width)); |
| | | // ååä¸å沿触å |
| | | // �л������ش��� |
| | | __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING); |
| | | capture_state = STATE_WAIT_RISING; |
| | | } |
| | | |
| | | // æ¸
é¤ä¸ææ å¿ |
| | | // ����жϱ�־ |
| | | __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); |
| | | } |
| | | } |
| | | uint32_t steering_pulse,motor_pulse; |
| | | void SBUS_Control_PWM(void) |
| | | { |
| | | ST_SBUSData sbusData; |
| | | |
| | | // è·å SBUS æ°æ® |
| | | if (SBUS_GetData(&sbusData) != HIDO_TRUE) |
| | | { |
| | | return; // æ²¡ææææ°æ® |
| | | } |
| | | |
| | | // CH0: 转åéé (200-1800) -> (1000-2000us) |
| | | uint16_t ch0 = sbusData.m_au16Channels[0]; |
| | | if (ch0 < 200) ch0 = 200; |
| | | if (ch0 > 1800) ch0 = 1800; |
| | | steering_pulse = ((ch0 - 200) * 1000) / 1600 + 1000; |
| | | |
| | | // CH1: è¡è¿éé (200-1800) -> (1000-2000us) |
| | | uint16_t ch1 = sbusData.m_au16Channels[1]; |
| | | if (ch1 < 200) ch1 = 200; |
| | | if (ch1 > 1800) ch1 = 1800; |
| | | motor_pulse = ((ch1 - 200) * 1000) / 1600 + 1000; |
| | | |
| | | // 设置 PWM è¾åº |
| | | __HAL_TIM_SetCompare(&STEERING_TIM, STEERING_CHANNEL, steering_pulse); |
| | | __HAL_TIM_SetCompare(&MOTOR_TIM, MOTOR_CHANNEL, motor_pulse); |
| | | } |
| | | |
| | | // ç´æ¥è®¾ç½®è宽ï¼å¾®ç§ï¼ |
| | | void Set_Steering_Pulse(uint32_t pulse_us) |
| | | { |
| | | steering_pulse = pulse_us; |
| | | __HAL_TIM_SetCompare(&STEERING_TIM, STEERING_CHANNEL, steering_pulse); |
| | | } |
| | | |
| | | void Set_Motor_Pulse(uint32_t pulse_us) |
| | | { |
| | | motor_pulse = pulse_us; |
| | | __HAL_TIM_SetCompare(&MOTOR_TIM, MOTOR_CHANNEL, motor_pulse); |
| | | } |
| | | #if 0 |
| | | /** |
| | | * @brief Update Callback (for overflow protection) |
| | |
| | | { |
| | | if (htim->Instance == TIM4) |
| | | { |
| | | // åªå¨é¿æ¶é´æ ååºæ¶æéç½®ç¶æ |
| | | // ֻ�ڳ�ʱ������Ӧʱ������״̬ |
| | | static uint32_t last_reset_ms = 0; |
| | | |
| | | if (HAL_GetTick() - last_reset_ms > 100) // 100ms è¶
æ¶ |
| | | if (HAL_GetTick() - last_reset_ms > 100) // 100ms ��ʱ |
| | | { |
| | | capture_state = 0; |
| | | __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING); |
| | |
| | | |
| | | if (capture_state == 0) |
| | | { |
| | | // ä¸å沿ï¼è®°å½èµ·å§æ¶é´ |
| | | // �����أ���¼��ʼʱ�� |
| | | rising_time = current_value; |
| | | printf("Rising Edge: %lu\r\n", rising_time); |
| | | |
| | | // åæ¢ä¸ºä¸éæ²¿æ£æµ |
| | | // �л�Ϊ�½��ؼ�� |
| | | __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_FALLING); |
| | | capture_state = 1; |
| | | } |
| | | else if (capture_state == 1) |
| | | { |
| | | // ä¸é沿ï¼è®¡ç®è宽 |
| | | // �½��أ��������� |
| | | falling_time = current_value; |
| | | pulse_width_us = falling_time - rising_time; |
| | | |
| | | // 鲿¢è´æ°ï¼é²æ¢æº¢åºï¼ |
| | | if (pulse_width_us > 65535) // è¶
è¿æå¤§åçå¼ |
| | | // ��ֹ��������ֹ����� |
| | | if (pulse_width_us > 65535) // ����������ֵ |
| | | { |
| | | pulse_width_us = 0; // æè
æ è®°ä¸ºæ æ |
| | | pulse_width_us = 0; // ���߱��Ϊ��Ч |
| | | } |
| | | |
| | | printf("Falling Edge: %lu\r\n", falling_time); |
| | | printf("Pulse Width: %lu μs\r\n", pulse_width_us); |
| | | printf("Pulse Width: %lu ��s\r\n", pulse_width_us); |
| | | |
| | | // éæ°è®¾ç½®ä¸ºä¸å沿ï¼çå¾
ä¸ä¸ä¸ªå¨æ |
| | | // ��������Ϊ�����أ��ȴ���һ������ |
| | | __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING); |
| | | capture_state = 0; |
| | | } |
| | |
| | | /******************************************************************************* |
| | | * Macro * |
| | | *******************************************************************************/ |
| | | // PWM è¾åºééå®å®ä¹ï¼æ ¹æ®æ¨çç¡¬ä»¶è¿æ¥ä¿®æ¹ï¼ |
| | | // PWM ���ͨ���궨�壨��������Ӳ�������޸ģ� |
| | | #define MOTOR_TIM htim3 |
| | | #define STEERING_TIM htim3 |
| | | |
| | | #define MOTOR_CHANNEL TIM_CHANNEL_1 // æ¥ TIM3_CH1 |
| | | #define STEERING_CHANNEL TIM_CHANNEL_2 // æ¥ TIM3_CH2 |
| | | #define MOTOR_CHANNEL TIM_CHANNEL_1 // �� TIM3_CH1 |
| | | #define STEERING_CHANNEL TIM_CHANNEL_2 // �� TIM3_CH2 |
| | | |
| | | void set_all_pwm(uint16_t duty); |
| | | void set_pwm_left(); |
| | |
| | | void Set_Steering_PWM(int16_t steer) ; |
| | | uint32_t Map(int16_t input, int16_t in_min, int16_t in_max, uint32_t out_min, uint32_t out_max); |
| | | void Set_Motor_PWM(int16_t speed) ; |
| | | void SBUS_Control_PWM(void); |
| | | // ç´æ¥è®¾ç½®è宽ï¼å¾®ç§ï¼ï¼ç¨äº failsafe æå¤é¨ç´æ¥æ§å¶ |
| | | void Set_Steering_Pulse(uint32_t pulse_us); |
| | | void Set_Motor_Pulse(uint32_t pulse_us); |
| | | |
| | | |
| | | #endif |
| | |
| | | /******************************************************************************* |
| | | * File Name : Uart.h |
| | | * Description : |
| | | * Created on : 2018å¹´4æ24æ¥ |
| | | * Author : æé® |
| | | * Created on : 2018��4��24�� |
| | | * Author : �ż� |
| | | *******************************************************************************/ |
| | | |
| | | #ifndef HAL_UART_H_ |
| | |
| | | UART_ID_4G, |
| | | UART_ID_GPS, |
| | | UART_ID_BT, |
| | | UART_ID_SBUS, |
| | | UART_ID_LAST, |
| | | }E_UartID; |
| | | |
| | |
| | | #define RTE_COMPONENTS_H |
| | | |
| | | |
| | | /* |
| | | * Define the Device Header File: |
| | | */ |
| | | #define CMSIS_device_header "stm32h7xx.h" |
| | | |
| | | |
| | | |
| | | #endif /* RTE_COMPONENTS_H */ |
| | |
| | | <bEvRecOn>1</bEvRecOn> |
| | | <bSchkAxf>0</bSchkAxf> |
| | | <bTchkAxf>0</bTchkAxf> |
| | | <nTsel>4</nTsel> |
| | | <nTsel>3</nTsel> |
| | | <sDll></sDll> |
| | | <sDllPa></sDllPa> |
| | | <sDlgDll></sDlgDll> |
| | |
| | | <tDlgDll></tDlgDll> |
| | | <tDlgPa></tDlgPa> |
| | | <tIfile></tIfile> |
| | | <pMon>Segger\JL2CM3.dll</pMon> |
| | | <pMon>BIN\CMSIS_AGDI.dll</pMon> |
| | | </DebugOpt> |
| | | <TargetDriverDllRegistry> |
| | | <SetRegEntry> |
| | |
| | | <Bp> |
| | | <Number>0</Number> |
| | | <Type>0</Type> |
| | | <LineNumber>170</LineNumber> |
| | | <LineNumber>150</LineNumber> |
| | | <EnabledFlag>1</EnabledFlag> |
| | | <Address>134565196</Address> |
| | | <Address>134543186</Address> |
| | | <ByteObject>0</ByteObject> |
| | | <HtxType>0</HtxType> |
| | | <ManyObjects>0</ManyObjects> |
| | | <SizeOfObject>0</SizeOfObject> |
| | | <BreakByAccess>0</BreakByAccess> |
| | | <BreakIfRCount>1</BreakIfRCount> |
| | | <Filename>../Core/Src/main.c</Filename> |
| | | <Filename>..\FML\pwm_ctrol.c</Filename> |
| | | <ExecCommand></ExecCommand> |
| | | <Expression>\\STM32H743\../Core/Src/main.c\170</Expression> |
| | | <Expression>\\STM32H743\../FML/pwm_ctrol.c\150</Expression> |
| | | </Bp> |
| | | </Breakpoint> |
| | | <WatchWindow1> |
| | |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>g_com_map[0]</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>9</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>g_stSBUSData</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>10</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>g_stSBUSData.m_au16Channels,0x0A</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>11</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>steering_pulse,0x0A</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>12</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>motor_pulse,0x0A</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>13</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>sbusData.m_au16Channels[0],0x0A</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>14</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>ch0,0x0A</ItemText> |
| | | </Ww> |
| | | <Ww> |
| | | <count>15</count> |
| | | <WinNumber>1</WinNumber> |
| | | <ItemText>ch1,0x0A</ItemText> |
| | | </Ww> |
| | | </WatchWindow1> |
| | | <MemoryWindow1> |
| | | <Mm> |
| | |
| | | <DebugFlag> |
| | | <trace>0</trace> |
| | | <periodic>1</periodic> |
| | | <aLwin>1</aLwin> |
| | | <aLwin>0</aLwin> |
| | | <aCover>0</aCover> |
| | | <aSer1>0</aSer1> |
| | | <aSer2>0</aSer2> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>26</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | | <bDave2>0</bDave2> |
| | | <PathWithFileName>..\FML\SBUS.c</PathWithFileName> |
| | | <FilenameWithoutPath>SBUS.c</FilenameWithoutPath> |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | </Group> |
| | | |
| | | <Group> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>5</GroupNumber> |
| | | <FileNumber>26</FileNumber> |
| | | <FileNumber>27</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>5</GroupNumber> |
| | | <FileNumber>27</FileNumber> |
| | | <FileNumber>28</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>28</FileNumber> |
| | | <FileNumber>29</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>29</FileNumber> |
| | | <FileNumber>30</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>30</FileNumber> |
| | | <FileNumber>31</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>31</FileNumber> |
| | | <FileNumber>32</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>32</FileNumber> |
| | | <FileNumber>33</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>33</FileNumber> |
| | | <FileNumber>34</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>34</FileNumber> |
| | | <FileNumber>35</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>35</FileNumber> |
| | | <FileNumber>36</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>36</FileNumber> |
| | | <FileNumber>37</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>37</FileNumber> |
| | | <FileNumber>38</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>38</FileNumber> |
| | | <FileNumber>39</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>39</FileNumber> |
| | | <FileNumber>40</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>40</FileNumber> |
| | | <FileNumber>41</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>41</FileNumber> |
| | | <FileNumber>42</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>42</FileNumber> |
| | | <FileNumber>43</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>43</FileNumber> |
| | | <FileNumber>44</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>44</FileNumber> |
| | | <FileNumber>45</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>45</FileNumber> |
| | | <FileNumber>46</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>46</FileNumber> |
| | | <FileNumber>47</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>6</GroupNumber> |
| | | <FileNumber>47</FileNumber> |
| | | <FileNumber>48</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>7</GroupNumber> |
| | | <FileNumber>48</FileNumber> |
| | | <FileNumber>49</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>49</FileNumber> |
| | | <FileNumber>50</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>50</FileNumber> |
| | | <FileNumber>51</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>51</FileNumber> |
| | | <FileNumber>52</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>52</FileNumber> |
| | | <FileNumber>53</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>53</FileNumber> |
| | | <FileNumber>54</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>54</FileNumber> |
| | | <FileNumber>55</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>55</FileNumber> |
| | | <FileNumber>56</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>56</FileNumber> |
| | | <FileNumber>57</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>57</FileNumber> |
| | | <FileNumber>58</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>8</GroupNumber> |
| | | <FileNumber>58</FileNumber> |
| | | <FileNumber>59</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>9</GroupNumber> |
| | | <FileNumber>59</FileNumber> |
| | | <FileNumber>60</FileNumber> |
| | | <FileType>4</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <TargetCommonOption> |
| | | <Device>STM32H743VITx</Device> |
| | | <Vendor>STMicroelectronics</Vendor> |
| | | <PackID>Keil.STM32H7xx_DFP.2.7.0</PackID> |
| | | <PackURL>http://www.keil.com/pack/</PackURL> |
| | | <PackID>Keil.STM32H7xx_DFP.4.1.3</PackID> |
| | | <PackURL>https://www.keil.com/pack/</PackURL> |
| | | <Cpu>IRAM(0x20000000-0x2001FFFF) IRAM2(0x24000000-0x2407FFFF) IROM(0x8000000-0x81FFFFF) CLOCK(12000000) FPU3(DFPU) CPUTYPE("Cortex-M7") ELITTLE TZ</Cpu> |
| | | <FlashUtilSpec></FlashUtilSpec> |
| | | <StartupFile></StartupFile> |
| | |
| | | <FileType>1</FileType> |
| | | <FilePath>..\FML\pwm_ctrol.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>SBUS.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\FML\SBUS.c</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | | <Group> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | [EXTDLL] |
| | | Count=0 |
| | |
| | | x_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I |
| | | ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third |
| | | _Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I../Drivers/CMSIS/Device/ST/STM3 |
| | | 2H7xx/Include -I../Drivers/CMSIS/Include -I.\RTE\_STM32H743 -IC:\Users\HXZK\App |
| | | Data\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Users\HXZK\AppData |
| | | \Local\Arm\Packs\Keil\STM32H7xx_DFP\2.7.0\Drivers\CMSIS\Device\ST\STM32H7xx\Inc |
| | | lude --predefine="__UVISION_VERSION SETA 530" --predefine="_RTE_ SETA 1" --pred |
| | | efine="STM32H743xx SETA 1" --predefine="_RTE_ SETA 1" --list=startup_stm32h743x |
| | | x.lst startup_stm32h743xx.s |
| | | 2H7xx/Include -I../Drivers/CMSIS/Include -I.\RTE\_STM32H743 -ID:\Users\zhyin\Ap |
| | | pData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include --predefine="__UVISION |
| | | _VERSION SETA 530" --predefine="_RTE_ SETA 1" --predefine="STM32H743xx SETA 1" |
| | | --predefine="_RTE_ SETA 1" --list=startup_stm32h743xx.lst startup_stm32h743xx.s |
| | | |
| | | |
| | | |
| | |
| | | Dma.Request5=USART3_TX |
| | | Dma.Request6=USART6_RX |
| | | Dma.Request7=USART6_TX |
| | | Dma.RequestsNb=8 |
| | | Dma.Request8=UART4_RX |
| | | Dma.RequestsNb=9 |
| | | Dma.UART4_RX.8.Direction=DMA_PERIPH_TO_MEMORY |
| | | Dma.UART4_RX.8.EventEnable=DISABLE |
| | | Dma.UART4_RX.8.FIFOMode=DMA_FIFOMODE_DISABLE |
| | | Dma.UART4_RX.8.Instance=DMA2_Stream0 |
| | | Dma.UART4_RX.8.MemDataAlignment=DMA_MDATAALIGN_BYTE |
| | | Dma.UART4_RX.8.MemInc=DMA_MINC_ENABLE |
| | | Dma.UART4_RX.8.Mode=DMA_CIRCULAR |
| | | Dma.UART4_RX.8.PeriphDataAlignment=DMA_PDATAALIGN_BYTE |
| | | Dma.UART4_RX.8.PeriphInc=DMA_PINC_DISABLE |
| | | Dma.UART4_RX.8.Polarity=HAL_DMAMUX_REQ_GEN_RISING |
| | | Dma.UART4_RX.8.Priority=DMA_PRIORITY_LOW |
| | | Dma.UART4_RX.8.RequestNumber=1 |
| | | Dma.UART4_RX.8.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber |
| | | Dma.UART4_RX.8.SignalID=NONE |
| | | Dma.UART4_RX.8.SyncEnable=DISABLE |
| | | Dma.UART4_RX.8.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT |
| | | Dma.UART4_RX.8.SyncRequestNumber=1 |
| | | Dma.UART4_RX.8.SyncSignalID=NONE |
| | | Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY |
| | | Dma.USART1_RX.0.EventEnable=DISABLE |
| | | Dma.USART1_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE |
| | |
| | | Mcu.IP1=DEBUG |
| | | Mcu.IP10=TIM3 |
| | | Mcu.IP11=TIM4 |
| | | Mcu.IP12=USART1 |
| | | Mcu.IP13=USART2 |
| | | Mcu.IP14=USART3 |
| | | Mcu.IP15=USART6 |
| | | Mcu.IP12=UART4 |
| | | Mcu.IP13=USART1 |
| | | Mcu.IP14=USART2 |
| | | Mcu.IP15=USART3 |
| | | Mcu.IP16=USART6 |
| | | Mcu.IP2=DMA |
| | | Mcu.IP3=FREERTOS |
| | | Mcu.IP4=MEMORYMAP |
| | |
| | | Mcu.IP7=SYS |
| | | Mcu.IP8=TIM1 |
| | | Mcu.IP9=TIM2 |
| | | Mcu.IPNb=16 |
| | | Mcu.IPNb=17 |
| | | Mcu.Name=STM32H743VITx |
| | | Mcu.Package=LQFP100 |
| | | Mcu.Pin0=PC13 |
| | |
| | | Mcu.Pin20=PC7 |
| | | Mcu.Pin21=PA9 |
| | | Mcu.Pin22=PA10 |
| | | Mcu.Pin23=PA13 (JTMS/SWDIO) |
| | | Mcu.Pin24=PA14 (JTCK/SWCLK) |
| | | Mcu.Pin25=VP_FREERTOS_VS_CMSIS_V2 |
| | | Mcu.Pin26=VP_SYS_VS_tim17 |
| | | Mcu.Pin27=VP_TIM1_VS_ClockSourceINT |
| | | Mcu.Pin28=VP_TIM2_VS_ClockSourceINT |
| | | Mcu.Pin29=VP_TIM3_VS_ClockSourceINT |
| | | Mcu.Pin23=PA11 |
| | | Mcu.Pin24=PA12 |
| | | Mcu.Pin25=PA13 (JTMS/SWDIO) |
| | | Mcu.Pin26=PA14 (JTCK/SWCLK) |
| | | Mcu.Pin27=VP_FREERTOS_VS_CMSIS_V2 |
| | | Mcu.Pin28=VP_SYS_VS_tim17 |
| | | Mcu.Pin29=VP_TIM1_VS_ClockSourceINT |
| | | Mcu.Pin3=PC0 |
| | | Mcu.Pin30=VP_TIM4_VS_ClockSourceINT |
| | | Mcu.Pin31=VP_MEMORYMAP_VS_MEMORYMAP |
| | | Mcu.Pin30=VP_TIM2_VS_ClockSourceINT |
| | | Mcu.Pin31=VP_TIM3_VS_ClockSourceINT |
| | | Mcu.Pin32=VP_TIM4_VS_ClockSourceINT |
| | | Mcu.Pin33=VP_MEMORYMAP_VS_MEMORYMAP |
| | | Mcu.Pin4=PC1 |
| | | Mcu.Pin5=PC2_C |
| | | Mcu.Pin6=PA0 |
| | | Mcu.Pin7=PA1 |
| | | Mcu.Pin8=PA2 |
| | | Mcu.Pin9=PA3 |
| | | Mcu.PinsNb=32 |
| | | Mcu.PinsNb=34 |
| | | Mcu.ThirdPartyNb=0 |
| | | Mcu.UserConstants= |
| | | Mcu.UserName=STM32H743VITx |
| | |
| | | NVIC.DMA1_Stream5_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA1_Stream6_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA1_Stream7_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DMA2_Stream0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true |
| | | NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false |
| | | NVIC.ForceEnableDMAVector=true |
| | | NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false |
| | |
| | | NVIC.TIM4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.TimeBase=TIM17_IRQn |
| | | NVIC.TimeBaseIP=TIM17 |
| | | NVIC.UART4_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | | NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true |
| | |
| | | PA10.Locked=true |
| | | PA10.Mode=Asynchronous |
| | | PA10.Signal=USART1_RX |
| | | PA11.Mode=Asynchronous |
| | | PA11.Signal=UART4_RX |
| | | PA12.Mode=Asynchronous |
| | | PA12.Signal=UART4_TX |
| | | PA13\ (JTMS/SWDIO).Mode=Serial_Wire |
| | | PA13\ (JTMS/SWDIO).Signal=DEBUG_JTMS-SWDIO |
| | | PA14\ (JTCK/SWCLK).Mode=Serial_Wire |
| | |
| | | ProjectManager.UAScriptAfterPath= |
| | | ProjectManager.UAScriptBeforePath= |
| | | ProjectManager.UnderRoot=false |
| | | ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM1_Init-TIM1-false-HAL-true,8-MX_TIM2_Init-TIM2-false-HAL-true,9-MX_TIM3_Init-TIM3-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true |
| | | ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM1_Init-TIM1-false-HAL-true,8-MX_TIM2_Init-TIM2-false-HAL-true,9-MX_TIM3_Init-TIM3-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_UART4_Init-UART4-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true |
| | | RCC.ADCFreq_Value=129000000 |
| | | RCC.AHB12Freq_Value=240000000 |
| | | RCC.AHB4Freq_Value=240000000 |
| | |
| | | TIM4.ICFilter_CH1=0xF |
| | | TIM4.IPParameters=Channel-Input_Capture1_from_TI1,Prescaler,ICFilter_CH1 |
| | | TIM4.Prescaler=239 |
| | | UART4.BaudRate=100000 |
| | | UART4.IPParameters=BaudRate,RxPinLevelInvertParam,WordLength,Parity,StopBits |
| | | UART4.Parity=PARITY_EVEN |
| | | UART4.RxPinLevelInvertParam=UART_ADVFEATURE_RXINV_ENABLE |
| | | UART4.StopBits=UART_STOPBITS_2 |
| | | UART4.WordLength=WORDLENGTH_9B |
| | | USART1.BaudRate=921600 |
| | | USART1.IPParameters=VirtualMode-Asynchronous,BaudRate |
| | | USART1.VirtualMode-Asynchronous=VM_ASYNC |
| | | USART2.IPParameters=VirtualMode-Asynchronous |
| | | USART2.VirtualMode-Asynchronous=VM_ASYNC |
| | | USART3.IPParameters=VirtualMode-Asynchronous |
| | | USART3.IPParameters=VirtualMode-Asynchronous,SwapParam |
| | | USART3.SwapParam=ADVFEATURE_SWAP_DISABLE |
| | | USART3.VirtualMode-Asynchronous=VM_ASYNC |
| | | USART6.IPParameters=VirtualMode |
| | | USART6.VirtualMode=VM_ASYNC |