diff --git a/.config b/.config
index f373028..ab6f8f6 100644
--- a/.config
+++ b/.config
@@ -127,7 +127,9 @@ CONFIG_RT_USING_SERIAL_V1=y
# CONFIG_RT_USING_SERIAL_V2 is not set
CONFIG_RT_SERIAL_USING_DMA=y
CONFIG_RT_SERIAL_RB_BUFSZ=64
-# CONFIG_RT_USING_CAN is not set
+CONFIG_RT_USING_CAN=y
+# CONFIG_RT_CAN_USING_HDR is not set
+# CONFIG_RT_CAN_USING_CANFD is not set
# CONFIG_RT_USING_HWTIMER is not set
# CONFIG_RT_USING_CPUTIME is not set
# CONFIG_RT_USING_I2C is not set
@@ -718,6 +720,9 @@ CONFIG_BSP_USING_UART2=y
CONFIG_BSP_UART2_RX_USING_DMA=y
CONFIG_BSP_UART2_TX_USING_DMA=y
# CONFIG_BSP_USING_UART3 is not set
+CONFIG_BSP_USING_CAN=y
+CONFIG_BSP_USING_CAN1=y
+CONFIG_BSP_USING_CAN2=y
# CONFIG_BSP_USING_SPI is not set
# CONFIG_BSP_USING_I2C1 is not set
# CONFIG_BSP_USING_TIM is not set
diff --git a/board/CubeMX_Config/.mxproject b/board/CubeMX_Config/.mxproject
index a7ec4e6..eba200c 100644
--- a/board/CubeMX_Config/.mxproject
+++ b/board/CubeMX_Config/.mxproject
@@ -1,12 +1,12 @@
[PreviousLibFiles]
-LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f413xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.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_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_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\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_adc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_adc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f413xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.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_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_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;
[PreviousUsedIarFiles]
SourceFiles=..\Src\main.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../\Src/system_stm32f4xx.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../\Src/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;null;
HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc;
[PreviousUsedKeilFiles]
-SourceFiles=..\Core\Src\main.c;..\Core\Src\stm32f4xx_it.c;..\Core\Src\stm32f4xx_hal_msp.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\Core\Src\system_stm32f4xx.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\Core\Src\system_stm32f4xx.c;;;
+SourceFiles=..\Core\Src\main.c;..\Core\Src\stm32f4xx_it.c;..\Core\Src\stm32f4xx_hal_msp.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\Core\Src\system_stm32f4xx.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\Core\Src\system_stm32f4xx.c;;;
HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc;
CDefines=USE_HAL_DRIVER;STM32F413xx;USE_HAL_DRIVER;USE_HAL_DRIVER;
diff --git a/board/CubeMX_Config/CubeMX_Config.ioc b/board/CubeMX_Config/CubeMX_Config.ioc
index 04f7964..2b747b6 100644
--- a/board/CubeMX_Config/CubeMX_Config.ioc
+++ b/board/CubeMX_Config/CubeMX_Config.ioc
@@ -1,27 +1,121 @@
#MicroXplorer Configuration settings - do not modify
+ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4
+ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag
+ADC1.NbrOfConversionFlag=1
+ADC1.Rank-0\#ChannelRegularConversion=1
+ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
+ADC1.master=1
+CAN1.BS1=CAN_BS1_4TQ
+CAN1.CalculateBaudRate=520833
+CAN1.CalculateTimeBit=1920
+CAN1.CalculateTimeQuantum=320.0
+CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,BS1
+CAN2.BS1=CAN_BS1_2TQ
+CAN2.CalculateBaudRate=781250
+CAN2.CalculateTimeBit=1280
+CAN2.CalculateTimeQuantum=320.0
+CAN2.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,BS1
+CAN3.BS2=CAN_BS2_2TQ
+CAN3.CalculateBaudRate=781250
+CAN3.CalculateTimeBit=1280
+CAN3.CalculateTimeQuantum=320.0
+CAN3.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,BS2
File.Version=6
GPIO.groupedBy=
KeepUserPlacement=false
Mcu.CPN=STM32F413VGT6
Mcu.Family=STM32F4
-Mcu.IP0=NVIC
-Mcu.IP1=RCC
-Mcu.IP2=SYS
-Mcu.IP3=USART1
-Mcu.IP4=USART2
-Mcu.IPNb=5
+Mcu.IP0=ADC1
+Mcu.IP1=CAN1
+Mcu.IP10=TIM1
+Mcu.IP11=TIM2
+Mcu.IP12=TIM3
+Mcu.IP13=TIM4
+Mcu.IP14=TIM12
+Mcu.IP15=UART4
+Mcu.IP16=UART5
+Mcu.IP17=UART7
+Mcu.IP18=UART8
+Mcu.IP19=UART9
+Mcu.IP2=CAN2
+Mcu.IP20=UART10
+Mcu.IP21=USART1
+Mcu.IP22=USART2
+Mcu.IP23=USART3
+Mcu.IP3=CAN3
+Mcu.IP4=I2C3
+Mcu.IP5=NVIC
+Mcu.IP6=RCC
+Mcu.IP7=SPI2
+Mcu.IP8=SPI4
+Mcu.IP9=SYS
+Mcu.IPNb=24
Mcu.Name=STM32F413V(G-H)Tx
Mcu.Package=LQFP100
-Mcu.Pin0=PH0 - OSC_IN
-Mcu.Pin1=PH1 - OSC_OUT
-Mcu.Pin2=PA2
-Mcu.Pin3=PA3
-Mcu.Pin4=PA9
-Mcu.Pin5=PA10
-Mcu.Pin6=PA13
-Mcu.Pin7=PA14
-Mcu.Pin8=VP_SYS_VS_Systick
-Mcu.PinsNb=9
+Mcu.Pin0=PE2
+Mcu.Pin1=PE3
+Mcu.Pin10=PC3
+Mcu.Pin11=PA0
+Mcu.Pin12=PA2
+Mcu.Pin13=PA3
+Mcu.Pin14=PA4
+Mcu.Pin15=PA5
+Mcu.Pin16=PA6
+Mcu.Pin17=PA7
+Mcu.Pin18=PC4
+Mcu.Pin19=PC5
+Mcu.Pin2=PE4
+Mcu.Pin20=PB0
+Mcu.Pin21=PB1
+Mcu.Pin22=PE7
+Mcu.Pin23=PE8
+Mcu.Pin24=PE9
+Mcu.Pin25=PE11
+Mcu.Pin26=PE12
+Mcu.Pin27=PE13
+Mcu.Pin28=PE14
+Mcu.Pin29=PB10
+Mcu.Pin3=PE5
+Mcu.Pin30=PB12
+Mcu.Pin31=PB13
+Mcu.Pin32=PB14
+Mcu.Pin33=PB15
+Mcu.Pin34=PD14
+Mcu.Pin35=PD15
+Mcu.Pin36=PC9
+Mcu.Pin37=PA8
+Mcu.Pin38=PA9
+Mcu.Pin39=PA10
+Mcu.Pin4=PE6
+Mcu.Pin40=PA11
+Mcu.Pin41=PA12
+Mcu.Pin42=PA13
+Mcu.Pin43=PA14
+Mcu.Pin44=PC10
+Mcu.Pin45=PC11
+Mcu.Pin46=PC12
+Mcu.Pin47=PD0
+Mcu.Pin48=PD2
+Mcu.Pin49=PD5
+Mcu.Pin5=PH0 - OSC_IN
+Mcu.Pin50=PD6
+Mcu.Pin51=PB3
+Mcu.Pin52=PB4
+Mcu.Pin53=PB6
+Mcu.Pin54=PB7
+Mcu.Pin55=PB8
+Mcu.Pin56=PB9
+Mcu.Pin57=PE0
+Mcu.Pin58=PE1
+Mcu.Pin59=VP_SYS_VS_Systick
+Mcu.Pin6=PH1 - OSC_OUT
+Mcu.Pin60=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin61=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin62=VP_TIM4_VS_ClockSourceINT
+Mcu.Pin7=PC0
+Mcu.Pin8=PC1
+Mcu.Pin9=PC2
+Mcu.PinsNb=63
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F413VGTx
@@ -38,18 +132,106 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+PA0.Mode=Asynchronous
+PA0.Signal=UART4_TX
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
+PA11.Mode=Asynchronous
+PA11.Signal=UART4_RX
+PA12.Mode=CAN_Activate
+PA12.Signal=CAN1_TX
PA13.Mode=Serial_Wire
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
-PA2.Mode=Asynchronous
-PA2.Signal=USART2_TX
-PA3.Mode=Asynchronous
-PA3.Signal=USART2_RX
+PA2.Signal=S_TIM2_CH3
+PA3.Signal=S_TIM2_CH4
+PA4.Signal=ADCx_IN4
+PA5.Signal=ADCx_IN5
+PA6.Signal=S_TIM3_CH1
+PA7.Signal=S_TIM3_CH2
+PA8.Mode=I2C
+PA8.Signal=I2C3_SCL
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
+PB0.Signal=S_TIM3_CH3
+PB1.Signal=S_TIM3_CH4
+PB10.Mode=Full_Duplex_Master
+PB10.Signal=SPI2_SCK
+PB12.Mode=CAN_Activate
+PB12.Signal=CAN2_RX
+PB13.Mode=CAN_Activate
+PB13.Signal=CAN2_TX
+PB14.Signal=S_TIM12_CH1
+PB15.Signal=S_TIM12_CH2
+PB3.Locked=true
+PB3.Mode=CAN_Activate
+PB3.Signal=CAN3_RX
+PB4.Locked=true
+PB4.Mode=CAN_Activate
+PB4.Signal=CAN3_TX
+PB6.Locked=true
+PB6.Signal=S_TIM4_CH1
+PB7.Locked=true
+PB7.Signal=S_TIM4_CH2
+PB8.Signal=S_TIM4_CH3
+PB9.Signal=S_TIM4_CH4
+PC0.Signal=ADCx_IN10
+PC1.Signal=ADCx_IN11
+PC10.Locked=true
+PC10.Mode=Asynchronous
+PC10.Signal=USART3_TX
+PC11.Locked=true
+PC11.Mode=Asynchronous
+PC11.Signal=USART3_RX
+PC12.Mode=Asynchronous
+PC12.Signal=UART5_TX
+PC2.Mode=Full_Duplex_Master
+PC2.Signal=SPI2_MISO
+PC3.Mode=Full_Duplex_Master
+PC3.Signal=SPI2_MOSI
+PC4.Signal=ADCx_IN14
+PC5.Signal=ADCx_IN15
+PC9.Mode=I2C
+PC9.Signal=I2C3_SDA
+PD0.Mode=CAN_Activate
+PD0.Signal=CAN1_RX
+PD14.Mode=Asynchronous
+PD14.Signal=UART9_RX
+PD15.Mode=Asynchronous
+PD15.Signal=UART9_TX
+PD2.Mode=Asynchronous
+PD2.Signal=UART5_RX
+PD5.Locked=true
+PD5.Mode=Asynchronous
+PD5.Signal=USART2_TX
+PD6.Locked=true
+PD6.Mode=Asynchronous
+PD6.Signal=USART2_RX
+PE0.Mode=Asynchronous
+PE0.Signal=UART8_RX
+PE1.Mode=Asynchronous
+PE1.Signal=UART8_TX
+PE11.Signal=S_TIM1_CH2
+PE12.Mode=Full_Duplex_Master
+PE12.Signal=SPI4_SCK
+PE13.Signal=S_TIM1_CH3
+PE14.Signal=S_TIM1_CH4
+PE2.Mode=Asynchronous
+PE2.Signal=UART10_RX
+PE3.Mode=Asynchronous
+PE3.Signal=UART10_TX
+PE4.Mode=NSS_Signal_Hard_Output
+PE4.Signal=SPI4_NSS
+PE5.Mode=Full_Duplex_Master
+PE5.Signal=SPI4_MISO
+PE6.Mode=Full_Duplex_Master
+PE6.Signal=SPI4_MOSI
+PE7.Mode=Asynchronous
+PE7.Signal=UART7_RX
+PE8.Mode=Asynchronous
+PE8.Signal=UART7_TX
+PE9.Signal=S_TIM1_CH1
PH0\ -\ OSC_IN.Mode=HSE-External-Oscillator
PH0\ -\ OSC_IN.Signal=RCC_OSC_IN
PH1\ -\ OSC_OUT.Mode=HSE-External-Oscillator
@@ -82,7 +264,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_CAN1_Init-CAN1-false-HAL-true,6-MX_CAN2_Init-CAN2-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_CAN3_Init-CAN3-false-HAL-true,9-MX_I2C3_Init-I2C3-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_SPI4_Init-SPI4-false-HAL-true,12-MX_TIM1_Init-TIM1-false-HAL-true,13-MX_TIM2_Init-TIM2-false-HAL-true,14-MX_TIM3_Init-TIM3-false-HAL-true,15-MX_TIM4_Init-TIM4-false-HAL-true,16-MX_TIM12_Init-TIM12-false-HAL-true,17-MX_UART4_Init-UART4-false-HAL-true,18-MX_UART5_Init-UART5-false-HAL-true,19-MX_UART7_Init-UART7-false-HAL-true,20-MX_UART8_Init-UART8-false-HAL-true,21-MX_UART9_Init-UART9-false-HAL-true,22-MX_UART10_Init-UART10-false-HAL-true,23-MX_USART3_UART_Init-USART3-false-HAL-true
RCC.AHBFreq_Value=100000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2
RCC.APB1Freq_Value=50000000
@@ -127,10 +309,106 @@ RCC.VCOI2SInputFreq_Value=500000
RCC.VCOI2SOutputFreq_Value=96000000
RCC.VCOInputFreq_Value=1000000
RCC.VCOOutputFreq_Value=200000000
+SH.ADCx_IN10.0=ADC1_IN10,IN10
+SH.ADCx_IN10.ConfNb=1
+SH.ADCx_IN11.0=ADC1_IN11,IN11
+SH.ADCx_IN11.ConfNb=1
+SH.ADCx_IN14.0=ADC1_IN14,IN14
+SH.ADCx_IN14.ConfNb=1
+SH.ADCx_IN15.0=ADC1_IN15,IN15
+SH.ADCx_IN15.ConfNb=1
+SH.ADCx_IN4.0=ADC1_IN4,IN4
+SH.ADCx_IN4.ConfNb=1
+SH.ADCx_IN5.0=ADC1_IN5,IN5
+SH.ADCx_IN5.ConfNb=1
+SH.S_TIM12_CH1.0=TIM12_CH1,Input_Capture1_from_TI1
+SH.S_TIM12_CH1.ConfNb=1
+SH.S_TIM12_CH2.0=TIM12_CH2,Input_Capture2_from_TI2
+SH.S_TIM12_CH2.ConfNb=1
+SH.S_TIM1_CH1.0=TIM1_CH1,Input_Capture1_from_TI1
+SH.S_TIM1_CH1.ConfNb=1
+SH.S_TIM1_CH2.0=TIM1_CH2,Input_Capture2_from_TI2
+SH.S_TIM1_CH2.ConfNb=1
+SH.S_TIM1_CH3.0=TIM1_CH3,Input_Capture3_from_TI3
+SH.S_TIM1_CH3.ConfNb=1
+SH.S_TIM1_CH4.0=TIM1_CH4,Input_Capture4_from_TI4
+SH.S_TIM1_CH4.ConfNb=1
+SH.S_TIM2_CH3.0=TIM2_CH3,Input_Capture3_from_TI3
+SH.S_TIM2_CH3.ConfNb=1
+SH.S_TIM2_CH4.0=TIM2_CH4,Input_Capture4_from_TI4
+SH.S_TIM2_CH4.ConfNb=1
+SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1
+SH.S_TIM3_CH1.ConfNb=1
+SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2
+SH.S_TIM3_CH2.ConfNb=1
+SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3
+SH.S_TIM3_CH3.ConfNb=1
+SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4
+SH.S_TIM3_CH4.ConfNb=1
+SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1
+SH.S_TIM4_CH1.ConfNb=1
+SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2
+SH.S_TIM4_CH2.ConfNb=1
+SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
+SH.S_TIM4_CH3.ConfNb=1
+SH.S_TIM4_CH4.0=TIM4_CH4,Output Compare4 CH4
+SH.S_TIM4_CH4.ConfNb=1
+SPI2.CalculateBaudRate=25.0 MBits/s
+SPI2.Direction=SPI_DIRECTION_2LINES
+SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
+SPI2.Mode=SPI_MODE_MASTER
+SPI2.VirtualType=VM_MASTER
+SPI4.CalculateBaudRate=50.0 MBits/s
+SPI4.Direction=SPI_DIRECTION_2LINES
+SPI4.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS
+SPI4.Mode=SPI_MODE_MASTER
+SPI4.VirtualNSS=VM_NSSHARD
+SPI4.VirtualType=VM_MASTER
+TIM1.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
+TIM1.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2
+TIM1.Channel-Input_Capture3_from_TI3=TIM_CHANNEL_3
+TIM1.Channel-Input_Capture4_from_TI4=TIM_CHANNEL_4
+TIM1.IPParameters=Channel-Input_Capture1_from_TI1,Channel-Input_Capture2_from_TI2,Channel-Input_Capture3_from_TI3,Channel-Input_Capture4_from_TI4
+TIM12.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
+TIM12.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2
+TIM12.IPParameters=Channel-Input_Capture1_from_TI1,Channel-Input_Capture2_from_TI2
+TIM2.Channel-Input_Capture3_from_TI3=TIM_CHANNEL_3
+TIM2.Channel-Input_Capture4_from_TI4=TIM_CHANNEL_4
+TIM2.IPParameters=Channel-Input_Capture3_from_TI3,Channel-Input_Capture4_from_TI4
+TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
+TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
+TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
+TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
+TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4
+TIM4.Channel-Output\ Compare4\ CH4=TIM_CHANNEL_4
+TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
+TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
+TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
+TIM4.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-Output Compare4 CH4
+UART10.IPParameters=VirtualMode
+UART10.VirtualMode=Asynchronous
+UART4.IPParameters=VirtualMode
+UART4.VirtualMode=Asynchronous
+UART5.IPParameters=VirtualMode
+UART5.VirtualMode=Asynchronous
+UART7.IPParameters=VirtualMode
+UART7.VirtualMode=Asynchronous
+UART8.IPParameters=VirtualMode
+UART8.VirtualMode=Asynchronous
+UART9.IPParameters=VirtualMode
+UART9.VirtualMode=Asynchronous
USART1.IPParameters=VirtualMode
USART1.VirtualMode=VM_ASYNC
USART2.IPParameters=VirtualMode
USART2.VirtualMode=VM_ASYNC
+USART3.IPParameters=VirtualMode
+USART3.VirtualMode=VM_ASYNC
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+VP_TIM1_VS_ClockSourceINT.Mode=Internal
+VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
+VP_TIM3_VS_ClockSourceINT.Mode=Internal
+VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
+VP_TIM4_VS_ClockSourceINT.Mode=Internal
+VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
board=custom
diff --git a/board/CubeMX_Config/Inc/main.h b/board/CubeMX_Config/Inc/main.h
index f10a9b1..b257260 100644
--- a/board/CubeMX_Config/Inc/main.h
+++ b/board/CubeMX_Config/Inc/main.h
@@ -49,6 +49,8 @@ extern "C" {
/* USER CODE END EM */
+void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
+
/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);
diff --git a/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h b/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h
index 6b053f7..7585adb 100644
--- a/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h
+++ b/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h
@@ -37,9 +37,9 @@
*/
#define HAL_MODULE_ENABLED
- /* #define HAL_ADC_MODULE_ENABLED */
+ #define HAL_ADC_MODULE_ENABLED
/* #define HAL_CRYP_MODULE_ENABLED */
-/* #define HAL_CAN_MODULE_ENABLED */
+#define HAL_CAN_MODULE_ENABLED
/* #define HAL_CRC_MODULE_ENABLED */
/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
/* #define HAL_CRYP_MODULE_ENABLED */
@@ -53,7 +53,7 @@
/* #define HAL_SRAM_MODULE_ENABLED */
/* #define HAL_SDRAM_MODULE_ENABLED */
/* #define HAL_HASH_MODULE_ENABLED */
-/* #define HAL_I2C_MODULE_ENABLED */
+#define HAL_I2C_MODULE_ENABLED
/* #define HAL_I2S_MODULE_ENABLED */
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LTDC_MODULE_ENABLED */
@@ -62,8 +62,8 @@
/* #define HAL_SAI_MODULE_ENABLED */
/* #define HAL_SD_MODULE_ENABLED */
/* #define HAL_MMC_MODULE_ENABLED */
-/* #define HAL_SPI_MODULE_ENABLED */
-/* #define HAL_TIM_MODULE_ENABLED */
+#define HAL_SPI_MODULE_ENABLED
+#define HAL_TIM_MODULE_ENABLED
#define HAL_UART_MODULE_ENABLED
/* #define HAL_USART_MODULE_ENABLED */
/* #define HAL_IRDA_MODULE_ENABLED */
diff --git a/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c b/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c
index 5c37c27..925c436 100644
--- a/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c
+++ b/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c
@@ -57,7 +57,9 @@
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
-/**
+
+void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
+ /**
* Initializes the Global MSP.
*/
void HAL_MspInit(void)
@@ -76,6 +78,722 @@ void HAL_MspInit(void)
/* USER CODE END MspInit 1 */
}
+/**
+* @brief ADC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hadc: ADC handle pointer
+* @retval None
+*/
+void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hadc->Instance==ADC1)
+ {
+ /* USER CODE BEGIN ADC1_MspInit 0 */
+
+ /* USER CODE END ADC1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_ADC1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**ADC1 GPIO Configuration
+ PC0 ------> ADC1_IN10
+ PC1 ------> ADC1_IN11
+ PA4 ------> ADC1_IN4
+ PA5 ------> ADC1_IN5
+ PC4 ------> ADC1_IN14
+ PC5 ------> ADC1_IN15
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
+ GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
+ GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN ADC1_MspInit 1 */
+
+ /* USER CODE END ADC1_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief ADC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hadc: ADC handle pointer
+* @retval None
+*/
+void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
+{
+ if(hadc->Instance==ADC1)
+ {
+ /* USER CODE BEGIN ADC1_MspDeInit 0 */
+
+ /* USER CODE END ADC1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_ADC1_CLK_DISABLE();
+
+ /**ADC1 GPIO Configuration
+ PC0 ------> ADC1_IN10
+ PC1 ------> ADC1_IN11
+ PA4 ------> ADC1_IN4
+ PA5 ------> ADC1_IN5
+ PC4 ------> ADC1_IN14
+ PC5 ------> ADC1_IN15
+ */
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5);
+
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5);
+
+ /* USER CODE BEGIN ADC1_MspDeInit 1 */
+
+ /* USER CODE END ADC1_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief CAN MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hcan: CAN handle pointer
+* @retval None
+*/
+void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hcan->Instance==CAN1)
+ {
+ /* USER CODE BEGIN CAN1_MspInit 0 */
+
+ /* USER CODE END CAN1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_CAN1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+ /**CAN1 GPIO Configuration
+ PA12 ------> CAN1_TX
+ PD0 ------> CAN1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_12;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_0;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN CAN1_MspInit 1 */
+
+ /* USER CODE END CAN1_MspInit 1 */
+ }
+ else if(hcan->Instance==CAN2)
+ {
+ /* USER CODE BEGIN CAN2_MspInit 0 */
+
+ /* USER CODE END CAN2_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_CAN2_CLK_ENABLE();
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**CAN2 GPIO Configuration
+ PB12 ------> CAN2_RX
+ PB13 ------> CAN2_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF9_CAN2;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN CAN2_MspInit 1 */
+
+ /* USER CODE END CAN2_MspInit 1 */
+ }
+ else if(hcan->Instance==CAN3)
+ {
+ /* USER CODE BEGIN CAN3_MspInit 0 */
+
+ /* USER CODE END CAN3_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_CAN3_CLK_ENABLE();
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**CAN3 GPIO Configuration
+ PB3 ------> CAN3_RX
+ PB4 ------> CAN3_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF11_CAN3;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN CAN3_MspInit 1 */
+
+ /* USER CODE END CAN3_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief CAN MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hcan: CAN handle pointer
+* @retval None
+*/
+void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan)
+{
+ if(hcan->Instance==CAN1)
+ {
+ /* USER CODE BEGIN CAN1_MspDeInit 0 */
+
+ /* USER CODE END CAN1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_CAN1_CLK_DISABLE();
+
+ /**CAN1 GPIO Configuration
+ PA12 ------> CAN1_TX
+ PD0 ------> CAN1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12);
+
+ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0);
+
+ /* USER CODE BEGIN CAN1_MspDeInit 1 */
+
+ /* USER CODE END CAN1_MspDeInit 1 */
+ }
+ else if(hcan->Instance==CAN2)
+ {
+ /* USER CODE BEGIN CAN2_MspDeInit 0 */
+
+ /* USER CODE END CAN2_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_CAN2_CLK_DISABLE();
+
+ /**CAN2 GPIO Configuration
+ PB12 ------> CAN2_RX
+ PB13 ------> CAN2_TX
+ */
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13);
+
+ /* USER CODE BEGIN CAN2_MspDeInit 1 */
+
+ /* USER CODE END CAN2_MspDeInit 1 */
+ }
+ else if(hcan->Instance==CAN3)
+ {
+ /* USER CODE BEGIN CAN3_MspDeInit 0 */
+
+ /* USER CODE END CAN3_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_CAN3_CLK_DISABLE();
+
+ /**CAN3 GPIO Configuration
+ PB3 ------> CAN3_RX
+ PB4 ------> CAN3_TX
+ */
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_3|GPIO_PIN_4);
+
+ /* USER CODE BEGIN CAN3_MspDeInit 1 */
+
+ /* USER CODE END CAN3_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief I2C MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hi2c: I2C handle pointer
+* @retval None
+*/
+void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hi2c->Instance==I2C3)
+ {
+ /* USER CODE BEGIN I2C3_MspInit 0 */
+
+ /* USER CODE END I2C3_MspInit 0 */
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**I2C3 GPIO Configuration
+ PC9 ------> I2C3_SDA
+ PA8 ------> I2C3_SCL
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_9;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF4_I2C3;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_8;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF4_I2C3;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* Peripheral clock enable */
+ __HAL_RCC_I2C3_CLK_ENABLE();
+ /* USER CODE BEGIN I2C3_MspInit 1 */
+
+ /* USER CODE END I2C3_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief I2C MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hi2c: I2C handle pointer
+* @retval None
+*/
+void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
+{
+ if(hi2c->Instance==I2C3)
+ {
+ /* USER CODE BEGIN I2C3_MspDeInit 0 */
+
+ /* USER CODE END I2C3_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_I2C3_CLK_DISABLE();
+
+ /**I2C3 GPIO Configuration
+ PC9 ------> I2C3_SDA
+ PA8 ------> I2C3_SCL
+ */
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_9);
+
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_8);
+
+ /* USER CODE BEGIN I2C3_MspDeInit 1 */
+
+ /* USER CODE END I2C3_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief SPI MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hspi: SPI handle pointer
+* @retval None
+*/
+void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hspi->Instance==SPI2)
+ {
+ /* USER CODE BEGIN SPI2_MspInit 0 */
+
+ /* USER CODE END SPI2_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_SPI2_CLK_ENABLE();
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**SPI2 GPIO Configuration
+ PC2 ------> SPI2_MISO
+ PC3 ------> SPI2_MOSI
+ PB10 ------> SPI2_SCK
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_10;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN SPI2_MspInit 1 */
+
+ /* USER CODE END SPI2_MspInit 1 */
+ }
+ else if(hspi->Instance==SPI4)
+ {
+ /* USER CODE BEGIN SPI4_MspInit 0 */
+
+ /* USER CODE END SPI4_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_SPI4_CLK_ENABLE();
+
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ /**SPI4 GPIO Configuration
+ PE4 ------> SPI4_NSS
+ PE5 ------> SPI4_MISO
+ PE6 ------> SPI4_MOSI
+ PE12 ------> SPI4_SCK
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_12;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI4;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN SPI4_MspInit 1 */
+
+ /* USER CODE END SPI4_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief SPI MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hspi: SPI handle pointer
+* @retval None
+*/
+void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
+{
+ if(hspi->Instance==SPI2)
+ {
+ /* USER CODE BEGIN SPI2_MspDeInit 0 */
+
+ /* USER CODE END SPI2_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_SPI2_CLK_DISABLE();
+
+ /**SPI2 GPIO Configuration
+ PC2 ------> SPI2_MISO
+ PC3 ------> SPI2_MOSI
+ PB10 ------> SPI2_SCK
+ */
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_2|GPIO_PIN_3);
+
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10);
+
+ /* USER CODE BEGIN SPI2_MspDeInit 1 */
+
+ /* USER CODE END SPI2_MspDeInit 1 */
+ }
+ else if(hspi->Instance==SPI4)
+ {
+ /* USER CODE BEGIN SPI4_MspDeInit 0 */
+
+ /* USER CODE END SPI4_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_SPI4_CLK_DISABLE();
+
+ /**SPI4 GPIO Configuration
+ PE4 ------> SPI4_NSS
+ PE5 ------> SPI4_MISO
+ PE6 ------> SPI4_MOSI
+ PE12 ------> SPI4_SCK
+ */
+ HAL_GPIO_DeInit(GPIOE, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_12);
+
+ /* USER CODE BEGIN SPI4_MspDeInit 1 */
+
+ /* USER CODE END SPI4_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief TIM_Base MSP Initialization
+* This function configures the hardware resources used in this example
+* @param htim_base: TIM_Base handle pointer
+* @retval None
+*/
+void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(htim_base->Instance==TIM1)
+ {
+ /* USER CODE BEGIN TIM1_MspInit 0 */
+
+ /* USER CODE END TIM1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ /**TIM1 GPIO Configuration
+ PE9 ------> TIM1_CH1
+ PE11 ------> TIM1_CH2
+ PE13 ------> TIM1_CH3
+ PE14 ------> TIM1_CH4
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13|GPIO_PIN_14;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM1_MspInit 1 */
+
+ /* USER CODE END TIM1_MspInit 1 */
+ }
+ else if(htim_base->Instance==TIM3)
+ {
+ /* USER CODE BEGIN TIM3_MspInit 0 */
+
+ /* USER CODE END TIM3_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM3_CLK_ENABLE();
+ /* USER CODE BEGIN TIM3_MspInit 1 */
+
+ /* USER CODE END TIM3_MspInit 1 */
+ }
+ else if(htim_base->Instance==TIM4)
+ {
+ /* USER CODE BEGIN TIM4_MspInit 0 */
+
+ /* USER CODE END TIM4_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM4_CLK_ENABLE();
+ /* USER CODE BEGIN TIM4_MspInit 1 */
+
+ /* USER CODE END TIM4_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief TIM_IC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param htim_ic: TIM_IC handle pointer
+* @retval None
+*/
+void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(htim_ic->Instance==TIM2)
+ {
+ /* USER CODE BEGIN TIM2_MspInit 0 */
+
+ /* USER CODE END TIM2_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM2_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**TIM2 GPIO Configuration
+ PA2 ------> TIM2_CH3
+ PA3 ------> TIM2_CH4
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM2_MspInit 1 */
+
+ /* USER CODE END TIM2_MspInit 1 */
+ }
+ else if(htim_ic->Instance==TIM12)
+ {
+ /* USER CODE BEGIN TIM12_MspInit 0 */
+
+ /* USER CODE END TIM12_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_TIM12_CLK_ENABLE();
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**TIM12 GPIO Configuration
+ PB14 ------> TIM12_CH1
+ PB15 ------> TIM12_CH2
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF9_TIM12;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM12_MspInit 1 */
+
+ /* USER CODE END TIM12_MspInit 1 */
+ }
+
+}
+
+void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(htim->Instance==TIM3)
+ {
+ /* USER CODE BEGIN TIM3_MspPostInit 0 */
+
+ /* USER CODE END TIM3_MspPostInit 0 */
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**TIM3 GPIO Configuration
+ PA6 ------> TIM3_CH1
+ PA7 ------> TIM3_CH2
+ PB0 ------> TIM3_CH3
+ PB1 ------> TIM3_CH4
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM3_MspPostInit 1 */
+
+ /* USER CODE END TIM3_MspPostInit 1 */
+ }
+ else if(htim->Instance==TIM4)
+ {
+ /* USER CODE BEGIN TIM4_MspPostInit 0 */
+
+ /* USER CODE END TIM4_MspPostInit 0 */
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**TIM4 GPIO Configuration
+ PB6 ------> TIM4_CH1
+ PB7 ------> TIM4_CH2
+ PB8 ------> TIM4_CH3
+ PB9 ------> TIM4_CH4
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM4_MspPostInit 1 */
+
+ /* USER CODE END TIM4_MspPostInit 1 */
+ }
+
+}
+/**
+* @brief TIM_Base MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param htim_base: TIM_Base handle pointer
+* @retval None
+*/
+void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
+{
+ if(htim_base->Instance==TIM1)
+ {
+ /* USER CODE BEGIN TIM1_MspDeInit 0 */
+
+ /* USER CODE END TIM1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM1_CLK_DISABLE();
+
+ /**TIM1 GPIO Configuration
+ PE9 ------> TIM1_CH1
+ PE11 ------> TIM1_CH2
+ PE13 ------> TIM1_CH3
+ PE14 ------> TIM1_CH4
+ */
+ HAL_GPIO_DeInit(GPIOE, GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13|GPIO_PIN_14);
+
+ /* USER CODE BEGIN TIM1_MspDeInit 1 */
+
+ /* USER CODE END TIM1_MspDeInit 1 */
+ }
+ else if(htim_base->Instance==TIM3)
+ {
+ /* USER CODE BEGIN TIM3_MspDeInit 0 */
+
+ /* USER CODE END TIM3_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM3_CLK_DISABLE();
+ /* USER CODE BEGIN TIM3_MspDeInit 1 */
+
+ /* USER CODE END TIM3_MspDeInit 1 */
+ }
+ else if(htim_base->Instance==TIM4)
+ {
+ /* USER CODE BEGIN TIM4_MspDeInit 0 */
+
+ /* USER CODE END TIM4_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM4_CLK_DISABLE();
+ /* USER CODE BEGIN TIM4_MspDeInit 1 */
+
+ /* USER CODE END TIM4_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief TIM_IC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param htim_ic: TIM_IC handle pointer
+* @retval None
+*/
+void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic)
+{
+ if(htim_ic->Instance==TIM2)
+ {
+ /* USER CODE BEGIN TIM2_MspDeInit 0 */
+
+ /* USER CODE END TIM2_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM2_CLK_DISABLE();
+
+ /**TIM2 GPIO Configuration
+ PA2 ------> TIM2_CH3
+ PA3 ------> TIM2_CH4
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+
+ /* USER CODE BEGIN TIM2_MspDeInit 1 */
+
+ /* USER CODE END TIM2_MspDeInit 1 */
+ }
+ else if(htim_ic->Instance==TIM12)
+ {
+ /* USER CODE BEGIN TIM12_MspDeInit 0 */
+
+ /* USER CODE END TIM12_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM12_CLK_DISABLE();
+
+ /**TIM12 GPIO Configuration
+ PB14 ------> TIM12_CH1
+ PB15 ------> TIM12_CH2
+ */
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14|GPIO_PIN_15);
+
+ /* USER CODE BEGIN TIM12_MspDeInit 1 */
+
+ /* USER CODE END TIM12_MspDeInit 1 */
+ }
+
+}
+
/**
* @brief UART MSP Initialization
* This function configures the hardware resources used in this example
@@ -85,7 +803,166 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(huart->Instance==USART1)
+ if(huart->Instance==UART4)
+ {
+ /* USER CODE BEGIN UART4_MspInit 0 */
+
+ /* USER CODE END UART4_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_UART4_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**UART4 GPIO Configuration
+ PA0 ------> UART4_TX
+ PA11 ------> UART4_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_0;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF11_UART4;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN UART4_MspInit 1 */
+
+ /* USER CODE END UART4_MspInit 1 */
+ }
+ else if(huart->Instance==UART5)
+ {
+ /* USER CODE BEGIN UART5_MspInit 0 */
+
+ /* USER CODE END UART5_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_UART5_CLK_ENABLE();
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+ /**UART5 GPIO Configuration
+ PC12 ------> UART5_TX
+ PD2 ------> UART5_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_12;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART5;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_2;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART5;
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN UART5_MspInit 1 */
+
+ /* USER CODE END UART5_MspInit 1 */
+ }
+ else if(huart->Instance==UART7)
+ {
+ /* USER CODE BEGIN UART7_MspInit 0 */
+
+ /* USER CODE END UART7_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_UART7_CLK_ENABLE();
+
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ /**UART7 GPIO Configuration
+ PE7 ------> UART7_RX
+ PE8 ------> UART7_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART7;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN UART7_MspInit 1 */
+
+ /* USER CODE END UART7_MspInit 1 */
+ }
+ else if(huart->Instance==UART8)
+ {
+ /* USER CODE BEGIN UART8_MspInit 0 */
+
+ /* USER CODE END UART8_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_UART8_CLK_ENABLE();
+
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ /**UART8 GPIO Configuration
+ PE0 ------> UART8_RX
+ PE1 ------> UART8_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART8;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN UART8_MspInit 1 */
+
+ /* USER CODE END UART8_MspInit 1 */
+ }
+ else if(huart->Instance==UART9)
+ {
+ /* USER CODE BEGIN UART9_MspInit 0 */
+
+ /* USER CODE END UART9_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_UART9_CLK_ENABLE();
+
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+ /**UART9 GPIO Configuration
+ PD14 ------> UART9_RX
+ PD15 ------> UART9_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF11_UART9;
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN UART9_MspInit 1 */
+
+ /* USER CODE END UART9_MspInit 1 */
+ }
+ else if(huart->Instance==UART10)
+ {
+ /* USER CODE BEGIN UART10_MspInit 0 */
+
+ /* USER CODE END UART10_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_UART10_CLK_ENABLE();
+
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ /**UART10 GPIO Configuration
+ PE2 ------> UART10_RX
+ PE3 ------> UART10_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF11_UART10;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN UART10_MspInit 1 */
+
+ /* USER CODE END UART10_MspInit 1 */
+ }
+ else if(huart->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspInit 0 */
@@ -117,22 +994,46 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
/* Peripheral clock enable */
__HAL_RCC_USART2_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOD_CLK_ENABLE();
/**USART2 GPIO Configuration
- PA2 ------> USART2_TX
- PA3 ------> USART2_RX
+ PD5 ------> USART2_TX
+ PD6 ------> USART2_RX
*/
- GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/* USER CODE BEGIN USART2_MspInit 1 */
/* USER CODE END USART2_MspInit 1 */
}
+ else if(huart->Instance==USART3)
+ {
+ /* USER CODE BEGIN USART3_MspInit 0 */
+
+ /* USER CODE END USART3_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART3_CLK_ENABLE();
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ /**USART3 GPIO Configuration
+ PC10 ------> USART3_TX
+ PC11 ------> USART3_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN USART3_MspInit 1 */
+
+ /* USER CODE END USART3_MspInit 1 */
+ }
}
@@ -144,7 +1045,117 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
*/
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
+ PA0 ------> UART4_TX
+ PA11 ------> UART4_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_11);
+
+ /* USER CODE BEGIN UART4_MspDeInit 1 */
+
+ /* USER CODE END UART4_MspDeInit 1 */
+ }
+ else if(huart->Instance==UART5)
+ {
+ /* USER CODE BEGIN UART5_MspDeInit 0 */
+
+ /* USER CODE END UART5_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_UART5_CLK_DISABLE();
+
+ /**UART5 GPIO Configuration
+ PC12 ------> UART5_TX
+ PD2 ------> UART5_RX
+ */
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12);
+
+ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
+
+ /* USER CODE BEGIN UART5_MspDeInit 1 */
+
+ /* USER CODE END UART5_MspDeInit 1 */
+ }
+ else if(huart->Instance==UART7)
+ {
+ /* USER CODE BEGIN UART7_MspDeInit 0 */
+
+ /* USER CODE END UART7_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_UART7_CLK_DISABLE();
+
+ /**UART7 GPIO Configuration
+ PE7 ------> UART7_RX
+ PE8 ------> UART7_TX
+ */
+ HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8);
+
+ /* USER CODE BEGIN UART7_MspDeInit 1 */
+
+ /* USER CODE END UART7_MspDeInit 1 */
+ }
+ else if(huart->Instance==UART8)
+ {
+ /* USER CODE BEGIN UART8_MspDeInit 0 */
+
+ /* USER CODE END UART8_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_UART8_CLK_DISABLE();
+
+ /**UART8 GPIO Configuration
+ PE0 ------> UART8_RX
+ PE1 ------> UART8_TX
+ */
+ HAL_GPIO_DeInit(GPIOE, GPIO_PIN_0|GPIO_PIN_1);
+
+ /* USER CODE BEGIN UART8_MspDeInit 1 */
+
+ /* USER CODE END UART8_MspDeInit 1 */
+ }
+ else if(huart->Instance==UART9)
+ {
+ /* USER CODE BEGIN UART9_MspDeInit 0 */
+
+ /* USER CODE END UART9_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_UART9_CLK_DISABLE();
+
+ /**UART9 GPIO Configuration
+ PD14 ------> UART9_RX
+ PD15 ------> UART9_TX
+ */
+ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_14|GPIO_PIN_15);
+
+ /* USER CODE BEGIN UART9_MspDeInit 1 */
+
+ /* USER CODE END UART9_MspDeInit 1 */
+ }
+ else if(huart->Instance==UART10)
+ {
+ /* USER CODE BEGIN UART10_MspDeInit 0 */
+
+ /* USER CODE END UART10_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_UART10_CLK_DISABLE();
+
+ /**UART10 GPIO Configuration
+ PE2 ------> UART10_RX
+ PE3 ------> UART10_TX
+ */
+ HAL_GPIO_DeInit(GPIOE, GPIO_PIN_2|GPIO_PIN_3);
+
+ /* USER CODE BEGIN UART10_MspDeInit 1 */
+
+ /* USER CODE END UART10_MspDeInit 1 */
+ }
+ else if(huart->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspDeInit 0 */
@@ -171,15 +1182,33 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
__HAL_RCC_USART2_CLK_DISABLE();
/**USART2 GPIO Configuration
- PA2 ------> USART2_TX
- PA3 ------> USART2_RX
+ PD5 ------> USART2_TX
+ PD6 ------> USART2_RX
*/
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5|GPIO_PIN_6);
/* USER CODE BEGIN USART2_MspDeInit 1 */
/* USER CODE END USART2_MspDeInit 1 */
}
+ else if(huart->Instance==USART3)
+ {
+ /* USER CODE BEGIN USART3_MspDeInit 0 */
+
+ /* USER CODE END USART3_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART3_CLK_DISABLE();
+
+ /**USART3 GPIO Configuration
+ PC10 ------> USART3_TX
+ PC11 ------> USART3_RX
+ */
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11);
+
+ /* USER CODE BEGIN USART3_MspDeInit 1 */
+
+ /* USER CODE END USART3_MspDeInit 1 */
+ }
}
diff --git a/board/Kconfig b/board/Kconfig
index 3f66c2a..2eb42b8 100644
--- a/board/Kconfig
+++ b/board/Kconfig
@@ -57,6 +57,19 @@ menu "On-chip Peripheral Drivers"
depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
default n
endif
+
+ menuconfig BSP_USING_CAN
+ bool "Enable CAN"
+ default n
+ select RT_USING_CAN
+ if BSP_USING_CAN
+ config BSP_USING_CAN1
+ bool "using CAN1"
+ default n
+ config BSP_USING_CAN2
+ bool "using CAN2"
+ default n
+ endif
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
diff --git a/iap/SConscript b/iap/SConscript
new file mode 100644
index 0000000..c9793b3
--- /dev/null
+++ b/iap/SConscript
@@ -0,0 +1,9 @@
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+path = [cwd]
+
+group = DefineGroup('IAP', src, depend = [], CPPPATH = path)
+
+Return('group')
diff --git a/project.uvoptx b/project.uvoptx
index 33c281d..cf6e08d 100644
--- a/project.uvoptx
+++ b/project.uvoptx
@@ -303,20 +303,20 @@
0
0
0
- rt-thread\components\libc\cplusplus\cxx_Mutex.cpp
- cxx_Mutex.cpp
+ rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp
+ cxx_Semaphore.cpp
0
0
2
10
- 1
+ 8
0
0
0
- rt-thread\components\libc\cplusplus\cxx_crt_init.c
- cxx_crt_init.c
+ rt-thread\components\libc\cplusplus\cxx_crt.cpp
+ cxx_crt.cpp
0
0
@@ -327,20 +327,20 @@
0
0
0
- rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp
- cxx_Semaphore.cpp
+ rt-thread\components\libc\cplusplus\cxx_Mutex.cpp
+ cxx_Mutex.cpp
0
0
2
12
- 8
+ 1
0
0
0
- rt-thread\components\libc\cplusplus\cxx_crt.cpp
- cxx_crt.cpp
+ rt-thread\components\libc\cplusplus\cxx_crt_init.c
+ cxx_crt_init.c
0
0
@@ -439,6 +439,18 @@
0
0
0
+ rt-thread\components\drivers\can\can.c
+ can.c
+ 0
+ 0
+
+
+ 4
+ 20
+ 1
+ 0
+ 0
+ 0
rt-thread\components\drivers\ipc\completion.c
completion.c
0
@@ -446,7 +458,7 @@
4
- 20
+ 21
1
0
0
@@ -458,7 +470,7 @@
4
- 21
+ 22
1
0
0
@@ -470,7 +482,7 @@
4
- 22
+ 23
1
0
0
@@ -482,7 +494,7 @@
4
- 23
+ 24
1
0
0
@@ -494,7 +506,7 @@
4
- 24
+ 25
1
0
0
@@ -506,7 +518,7 @@
4
- 25
+ 26
1
0
0
@@ -518,7 +530,7 @@
4
- 26
+ 27
1
0
0
@@ -530,7 +542,7 @@
4
- 27
+ 28
1
0
0
@@ -542,7 +554,7 @@
4
- 28
+ 29
1
0
0
@@ -556,13 +568,13 @@
Drivers
- 1
+ 0
0
0
0
5
- 29
+ 30
1
0
0
@@ -574,7 +586,7 @@
5
- 30
+ 31
1
0
0
@@ -586,7 +598,7 @@
5
- 31
+ 32
2
0
0
@@ -598,7 +610,19 @@
5
- 32
+ 33
+ 1
+ 0
+ 0
+ 0
+ libraries\HAL_Drivers\drv_can.c
+ drv_can.c
+ 0
+ 0
+
+
+ 5
+ 34
1
0
0
@@ -610,7 +634,7 @@
5
- 33
+ 35
1
0
0
@@ -622,7 +646,7 @@
5
- 34
+ 36
1
0
0
@@ -634,7 +658,7 @@
5
- 35
+ 37
1
0
0
@@ -654,19 +678,7 @@
0
6
- 36
- 1
- 0
- 0
- 0
- rt-thread\components\fal\src\fal_flash.c
- fal_flash.c
- 0
- 0
-
-
- 6
- 37
+ 38
1
0
0
@@ -678,7 +690,19 @@
6
- 38
+ 39
+ 1
+ 0
+ 0
+ 0
+ rt-thread\components\fal\src\fal_flash.c
+ fal_flash.c
+ 0
+ 0
+
+
+ 6
+ 40
1
0
0
@@ -690,7 +714,7 @@
6
- 39
+ 41
1
0
0
@@ -704,13 +728,13 @@
Finsh
- 1
+ 0
0
0
0
7
- 40
+ 42
1
0
0
@@ -722,7 +746,7 @@
7
- 41
+ 43
1
0
0
@@ -734,7 +758,7 @@
7
- 42
+ 44
1
0
0
@@ -746,7 +770,7 @@
7
- 43
+ 45
1
0
0
@@ -758,6 +782,26 @@
+
+ IAP
+ 1
+ 0
+ 0
+ 0
+
+ 8
+ 46
+ 1
+ 0
+ 0
+ 0
+ iap\iap.c
+ iap.c
+ 0
+ 0
+
+
+
Kernel
0
@@ -765,8 +809,8 @@
0
0
- 8
- 44
+ 9
+ 47
1
0
0
@@ -777,8 +821,8 @@
0
- 8
- 45
+ 9
+ 48
1
0
0
@@ -789,8 +833,8 @@
0
- 8
- 46
+ 9
+ 49
1
0
0
@@ -801,8 +845,8 @@
0
- 8
- 47
+ 9
+ 50
1
0
0
@@ -813,8 +857,8 @@
0
- 8
- 48
+ 9
+ 51
1
0
0
@@ -825,8 +869,8 @@
0
- 8
- 49
+ 9
+ 52
1
0
0
@@ -837,8 +881,8 @@
0
- 8
- 50
+ 9
+ 53
1
0
0
@@ -849,8 +893,8 @@
0
- 8
- 51
+ 9
+ 54
1
0
0
@@ -861,8 +905,8 @@
0
- 8
- 52
+ 9
+ 55
1
0
0
@@ -873,8 +917,8 @@
0
- 8
- 53
+ 9
+ 56
1
0
0
@@ -885,8 +929,8 @@
0
- 8
- 54
+ 9
+ 57
1
0
0
@@ -897,8 +941,8 @@
0
- 8
- 55
+ 9
+ 58
1
0
0
@@ -909,8 +953,8 @@
0
- 8
- 56
+ 9
+ 59
1
0
0
@@ -929,8 +973,8 @@
0
0
- 9
- 57
+ 10
+ 60
1
0
0
@@ -941,8 +985,8 @@
0
- 9
- 58
+ 10
+ 61
1
0
0
@@ -953,8 +997,8 @@
0
- 9
- 59
+ 10
+ 62
1
0
0
@@ -965,8 +1009,8 @@
0
- 9
- 60
+ 10
+ 63
1
0
0
@@ -977,8 +1021,8 @@
0
- 9
- 61
+ 10
+ 64
1
0
0
@@ -989,8 +1033,8 @@
0
- 9
- 62
+ 10
+ 65
1
0
0
@@ -1001,8 +1045,8 @@
0
- 9
- 63
+ 10
+ 66
1
0
0
@@ -1013,8 +1057,8 @@
0
- 9
- 64
+ 10
+ 67
1
0
0
@@ -1025,8 +1069,8 @@
0
- 9
- 65
+ 10
+ 68
1
0
0
@@ -1037,8 +1081,8 @@
0
- 9
- 66
+ 10
+ 69
1
0
0
@@ -1049,8 +1093,8 @@
0
- 9
- 67
+ 10
+ 70
1
0
0
@@ -1061,8 +1105,8 @@
0
- 9
- 68
+ 10
+ 71
1
0
0
@@ -1073,8 +1117,8 @@
0
- 9
- 69
+ 10
+ 72
1
0
0
@@ -1085,8 +1129,8 @@
0
- 9
- 70
+ 10
+ 73
1
0
0
@@ -1097,8 +1141,8 @@
0
- 9
- 71
+ 10
+ 74
1
0
0
@@ -1109,8 +1153,20 @@
0
- 9
- 72
+ 10
+ 75
+ 1
+ 0
+ 0
+ 0
+ libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c
+ stm32f4xx_hal_can.c
+ 0
+ 0
+
+
+ 10
+ 76
1
0
0
@@ -1121,8 +1177,8 @@
0
- 9
- 73
+ 10
+ 77
1
0
0
@@ -1133,8 +1189,8 @@
0
- 9
- 74
+ 10
+ 78
1
0
0
@@ -1145,8 +1201,8 @@
0
- 9
- 75
+ 10
+ 79
1
0
0
@@ -1157,8 +1213,8 @@
0
- 9
- 76
+ 10
+ 80
1
0
0
@@ -1169,8 +1225,8 @@
0
- 9
- 77
+ 10
+ 81
1
0
0
@@ -1181,8 +1237,8 @@
0
- 9
- 78
+ 10
+ 82
1
0
0
@@ -1196,13 +1252,13 @@
Utilities
- 1
+ 0
0
0
0
- 10
- 79
+ 11
+ 83
1
0
0
@@ -1214,24 +1270,4 @@
-
- iap
- 1
- 0
- 0
- 0
-
- 11
- 80
- 1
- 0
- 0
- 0
- .\iap\iap.c
- iap.c
- 0
- 0
-
-
-
diff --git a/project.uvprojx b/project.uvprojx
index e49e7ed..d34e034 100644
--- a/project.uvprojx
+++ b/project.uvprojx
@@ -16,7 +16,7 @@
STM32F413VGTx
STMicroelectronics
- Keil.STM32F4xx_DFP.2.15.0
+ Keil.STM32F4xx_DFP.2.16.0
http://www.keil.com/pack/
IRAM(0x20000000,0x00050000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE
@@ -339,7 +339,7 @@
__STDC_LIMIT_MACROS, STM32F413xx, USE_HAL_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, RT_USING_ARM_LIBC
- rt-thread\components\drivers\include;rt-thread\components\libc\posix\io\poll;libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Inc;.;board\CubeMX_Config\Inc;rt-thread\components\libc\posix\ipc;libraries\HAL_Drivers\drv_flash;libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Include;rt-thread\components\libc\compilers\common\include;libraries\HAL_Drivers;rt-thread\components\drivers\include;rt-thread\components\libc\compilers\common\extension\fcntl\octal;board;rt-thread\components\libc\posix\io\stdio;rt-thread\libcpu\arm\common;rt-thread\components\drivers\include;rt-thread\include;rt-thread\components\fal\inc;rt-thread\components\utilities\ymodem;rt-thread\components\libc\compilers\common\extension;libraries\HAL_Drivers\config;rt-thread\components\finsh;rt-thread\libcpu\arm\cortex-m4;rt-thread\components\drivers\include;libraries\HAL_Drivers\CMSIS\Include;rt-thread\components\libc\cplusplus
+ rt-thread\components\drivers\include;rt-thread\components\libc\posix\io\poll;rt-thread\components\drivers\include;libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Inc;.;board\CubeMX_Config\Inc;rt-thread\components\libc\posix\ipc;libraries\HAL_Drivers\drv_flash;libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Include;rt-thread\components\libc\compilers\common\include;libraries\HAL_Drivers;rt-thread\components\drivers\include;rt-thread\components\libc\compilers\common\extension\fcntl\octal;board;rt-thread\components\libc\posix\io\stdio;rt-thread\libcpu\arm\common;rt-thread\components\drivers\include;rt-thread\include;iap;rt-thread\components\fal\inc;rt-thread\components\utilities\ymodem;rt-thread\components\libc\compilers\common\extension;libraries\HAL_Drivers\config;rt-thread\components\finsh;rt-thread\libcpu\arm\cortex-m4;rt-thread\components\drivers\include;libraries\HAL_Drivers\CMSIS\Include;rt-thread\components\libc\cplusplus
@@ -428,16 +428,6 @@
CPlusPlus
-
- cxx_Mutex.cpp
- 8
- rt-thread\components\libc\cplusplus\cxx_Mutex.cpp
-
-
- cxx_crt_init.c
- 1
- rt-thread\components\libc\cplusplus\cxx_crt_init.c
-
cxx_Semaphore.cpp
8
@@ -448,6 +438,16 @@
8
rt-thread\components\libc\cplusplus\cxx_crt.cpp
+
+ cxx_Mutex.cpp
+ 8
+ rt-thread\components\libc\cplusplus\cxx_Mutex.cpp
+
+
+ cxx_crt_init.c
+ 1
+ rt-thread\components\libc\cplusplus\cxx_crt_init.c
+
cxx_Thread.cpp
8
@@ -488,6 +488,11 @@
DeviceDrivers
+
+ can.c
+ 1
+ rt-thread\components\drivers\can\can.c
+
completion.c
1
@@ -558,6 +563,11 @@
2
libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f413xx.s
+
+ drv_can.c
+ 1
+ libraries\HAL_Drivers\drv_can.c
+
drv_common.c
1
@@ -583,16 +593,16 @@
Fal
-
- fal_flash.c
- 1
- rt-thread\components\fal\src\fal_flash.c
-
fal_partition.c
1
rt-thread\components\fal\src\fal_partition.c
+
+ fal_flash.c
+ 1
+ rt-thread\components\fal\src\fal_flash.c
+
fal_rtt.c
1
@@ -630,6 +640,16 @@
+
+ IAP
+
+
+ iap.c
+ 1
+ iap\iap.c
+
+
+
Kernel
@@ -778,6 +798,11 @@
1
libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c
+
+ stm32f4xx_hal_can.c
+ 1
+ libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c
+
stm32f4xx_hal_cryp.c
1
@@ -825,16 +850,6 @@
-
- iap
-
-
- iap.c
- 1
- .\iap\iap.c
-
-
-
@@ -848,7 +863,7 @@
- project
+ <Project Info>
0
1
diff --git a/rtconfig.h b/rtconfig.h
index 40ccfd1..56b3a2a 100644
--- a/rtconfig.h
+++ b/rtconfig.h
@@ -83,6 +83,7 @@
#define RT_USING_SERIAL_V1
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 64
+#define RT_USING_CAN
#define RT_USING_PIN
#define RT_USING_WDT
@@ -216,6 +217,9 @@
#define BSP_USING_UART2
#define BSP_UART2_RX_USING_DMA
#define BSP_UART2_TX_USING_DMA
+#define BSP_USING_CAN
+#define BSP_USING_CAN1
+#define BSP_USING_CAN2
#define BSP_USING_ON_CHIP_FLASH
/* Board extended module Drivers */