diff --git a/.cproject b/.cproject
index d7546c9..0511adc 100644
--- a/.cproject
+++ b/.cproject
@@ -23,7 +23,7 @@
-
+
@@ -39,8 +39,8 @@
@@ -77,8 +77,8 @@
+
-
@@ -108,7 +108,7 @@
-
+
@@ -120,15 +120,15 @@
diff --git a/.mxproject b/.mxproject
index 5b2fbd1..2c260b6 100644
--- a/.mxproject
+++ b/.mxproject
@@ -1,8 +1,8 @@
[PreviousLibFiles]
-LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_usart.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.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_ll_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_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_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_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f446xx.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_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.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_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_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_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_ll_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_ll_usart.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.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_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_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_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.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_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_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_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_ll_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_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f446xx.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;
[PreviousUsedCubeIDEFiles]
-SourceFiles=Src\main.c;Src\gpio.c;Src\adc.c;Src\can.c;Src\spi.c;Src\tim.c;Src\usart.c;Src\stm32f4xx_it.c;Src\stm32f4xx_hal_msp.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.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_ll_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_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Src\system_stm32f4xx.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.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_ll_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_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Src\system_stm32f4xx.c;;;
+SourceFiles=Src\main.c;Src\gpio.c;Src\adc.c;Src\can.c;Src\spi.c;Src\tim.c;Src\usart.c;Src\stm32f4xx_it.c;Src\stm32f4xx_hal_msp.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.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_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_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_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Src\system_stm32f4xx.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.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_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_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_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;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;Inc;
CDefines=USE_FULL_LL_DRIVER;USE_HAL_DRIVER;STM32F446xx;USE_FULL_LL_DRIVER;USE_HAL_DRIVER;USE_HAL_DRIVER;
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 85a57af..257ce35 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/App/CAN_API.c b/App/CAN_API.c
new file mode 100644
index 0000000..c57180e
--- /dev/null
+++ b/App/CAN_API.c
@@ -0,0 +1,104 @@
+/*
+ * CanCallBacks.c
+ *
+ * Created on: 23 авг. 2023 г.
+ * Author: on4ip
+ */
+#include "CAN_API.h"
+
+void initCAN(enum CAN_API_BAUD baud) {
+
+
+ CAN_FilterTypeDef sFilterConfig;
+ hcan2.Instance = CAN2;
+ hcan2.Init.Prescaler = 5;
+ hcan2.Init.Mode = CAN_MODE_NORMAL;
+ hcan2.Init.SyncJumpWidth = CAN_SJW_1TQ;
+ hcan2.Init.TimeSeg1 = CAN_BS1_1TQ;
+ hcan2.Init.TimeSeg2 = CAN_BS2_7TQ;
+ hcan2.Init.TimeTriggeredMode = DISABLE;
+ hcan2.Init.AutoBusOff = DISABLE;
+ hcan2.Init.AutoWakeUp = DISABLE;
+ hcan2.Init.AutoRetransmission = DISABLE;
+ hcan2.Init.ReceiveFifoLocked = DISABLE;
+ hcan2.Init.TransmitFifoPriority = DISABLE;
+
+ switch(baud)
+ {
+ case CAN_BAUD_125:
+ hcan2.Init.Prescaler = 20;
+ hcan2.Init.TimeSeg1 = CAN_BS1_15TQ;
+ hcan2.Init.TimeSeg2 = CAN_BS2_2TQ;
+ break;
+ case CAN_BAUD_250:
+ hcan2.Init.Prescaler = 10;
+ hcan2.Init.TimeSeg1 = CAN_BS1_15TQ;
+ hcan2.Init.TimeSeg2 = CAN_BS2_2TQ;
+ break;
+ case CAN_BAUD_500:
+ hcan2.Init.Prescaler = 10;
+ hcan2.Init.TimeSeg1 = CAN_BS1_1TQ;
+ hcan2.Init.TimeSeg2 = CAN_BS2_7TQ;
+ break;
+ case CAN_BAUD_1000:
+ hcan2.Init.Prescaler = 5;
+ hcan2.Init.TimeSeg1 = CAN_BS1_1TQ;
+ hcan2.Init.TimeSeg2 = CAN_BS2_7TQ;
+ break;
+ default:
+ hcan2.Init.Prescaler = 5;
+ hcan2.Init.TimeSeg1 = CAN_BS1_1TQ;
+ hcan2.Init.TimeSeg2 = CAN_BS2_7TQ;
+ break;
+ }
+
+ if (HAL_CAN_Init(&hcan2) != HAL_OK) {
+ Error_Handler();
+ }
+
+ sFilterConfig.FilterBank = 0;
+ sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
+ sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
+ sFilterConfig.FilterIdHigh = 0x0000;
+ sFilterConfig.FilterIdLow = 0x0000;
+ sFilterConfig.FilterMaskIdHigh = 0x0000;
+ sFilterConfig.FilterMaskIdLow = 0x0000;
+ sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
+ sFilterConfig.FilterActivation = ENABLE;
+ sFilterConfig.SlaveStartFilterBank = 14;
+ if (HAL_CAN_ConfigFilter(&hcan2, &sFilterConfig) != HAL_OK) {
+ /* Filter configuration Error */
+ Error_Handler();
+ }
+
+ HAL_CAN_Start(&hcan2);
+
+ /*##-4- Activate CAN RX notification #######################################*/
+ if (HAL_CAN_ActivateNotification(&hcan2, CAN_IT_RX_FIFO0_MSG_PENDING)
+ != HAL_OK) {
+ /* Notification Error */
+ Error_Handler();
+ }
+}
+CAN_RxHeaderTypeDef RxHeader1;
+uint8_t RxData1[8];
+void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan) {
+ /* Get RX message */
+ if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader1, RxData1) != HAL_OK)
+ {
+ /* Reception Error */
+ Error_Handler();
+ }
+
+}
+CAN_RxHeaderTypeDef RxHeader0;
+uint8_t RxData0[8];
+void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
+{
+ /* Get RX message */
+ if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader0, RxData0) != HAL_OK)
+ {
+ /* Reception Error */
+ Error_Handler();
+ }
+}
diff --git a/App/CAN_API.h b/App/CAN_API.h
new file mode 100644
index 0000000..c98f639
--- /dev/null
+++ b/App/CAN_API.h
@@ -0,0 +1,22 @@
+/*
+ * CAN_API.h
+ *
+ * Created on: 23 авг. 2023 г.
+ * Author: on4ip
+ */
+
+#ifndef CAN_API_H_
+#define CAN_API_H_
+#include "main.h"
+//#include "can.h"
+enum CAN_API_BAUD
+{
+ CAN_BAUD_125,
+ CAN_BAUD_250,
+ CAN_BAUD_500,
+ CAN_BAUD_1000,
+ CAN_BUAD_END
+};
+void initCAN(enum CAN_API_BAUD baud );
+
+#endif /* CAN_API_H_ */
diff --git a/App/appIsrCallBacks.c b/App/appIsrCallBacks.c
index cb1de88..f105a6f 100644
--- a/App/appIsrCallBacks.c
+++ b/App/appIsrCallBacks.c
@@ -30,7 +30,7 @@ void adcIsrCallBack(void) {
}
update_IO_ADC(SYSTEMobj_1.IO, ADC_array,SYSTEMobj_1.DRIVE->STAT.stat.bit_ENABLED);
/*Calling of Application control function with Fast update rate*/
- FAST_loop(&SYSTEMobj_1);
+ //FAST_loop(&SYSTEMobj_1);
stop_ADC_isr = SysTick->VAL;
ADC_ISR_time = ISR_TIME_CALC(start_ADC_isr, stop_ADC_isr);
LL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
diff --git a/Inc/can.h b/Inc/can.h
index 34bbcbc..f9d9695 100644
--- a/Inc/can.h
+++ b/Inc/can.h
@@ -32,12 +32,15 @@ extern "C" {
/* USER CODE END Includes */
+extern CAN_HandleTypeDef hcan1;
+
extern CAN_HandleTypeDef hcan2;
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
+void MX_CAN1_Init(void);
void MX_CAN2_Init(void);
/* USER CODE BEGIN Prototypes */
diff --git a/Inc/main.h b/Inc/main.h
index f4f30ba..40f47c2 100644
--- a/Inc/main.h
+++ b/Inc/main.h
@@ -30,22 +30,23 @@ extern "C" {
#include "stm32f4xx_hal.h"
#include "stm32f4xx_ll_adc.h"
+#include "stm32f4xx_ll_spi.h"
+#include "stm32f4xx_ll_tim.h"
+#include "stm32f4xx_ll_usart.h"
#include "stm32f4xx_ll_rcc.h"
-#include "stm32f4xx_ll_bus.h"
#include "stm32f4xx_ll_system.h"
+#include "stm32f4xx_ll_gpio.h"
#include "stm32f4xx_ll_exti.h"
+#include "stm32f4xx_ll_bus.h"
#include "stm32f4xx_ll_cortex.h"
#include "stm32f4xx_ll_utils.h"
#include "stm32f4xx_ll_pwr.h"
#include "stm32f4xx_ll_dma.h"
-#include "stm32f4xx_ll_spi.h"
-#include "stm32f4xx_ll_tim.h"
-#include "stm32f4xx_ll_usart.h"
-#include "stm32f4xx_ll_gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "appIsrCallBacks.h"
+#include "CAN_API.h"
/* USER CODE END Includes */
/* Exported types ------------------------------------------------------------*/
diff --git a/Inc/stm32f4xx_it.h b/Inc/stm32f4xx_it.h
index fc9dab0..1532364 100644
--- a/Inc/stm32f4xx_it.h
+++ b/Inc/stm32f4xx_it.h
@@ -59,8 +59,6 @@ void ADC_IRQHandler(void);
void TIM1_BRK_TIM9_IRQHandler(void);
void TIM1_CC_IRQHandler(void);
void TIM2_IRQHandler(void);
-void CAN2_RX0_IRQHandler(void);
-void CAN2_RX1_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
diff --git a/Src/can.c b/Src/can.c
index 982c0e1..0825d1c 100644
--- a/Src/can.c
+++ b/Src/can.c
@@ -24,8 +24,65 @@
/* USER CODE END 0 */
+CAN_HandleTypeDef hcan1;
CAN_HandleTypeDef hcan2;
+/* CAN1 init function */
+void MX_CAN1_Init(void)
+{
+
+ /* USER CODE BEGIN CAN1_Init 0 */
+
+ /* USER CODE END CAN1_Init 0 */
+
+ /* USER CODE BEGIN CAN1_Init 1 */
+
+ /* USER CODE END CAN1_Init 1 */
+ hcan1.Instance = CAN1;
+ hcan1.Init.Prescaler = 5;
+ hcan1.Init.Mode = CAN_MODE_LOOPBACK;
+ hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ;
+ hcan1.Init.TimeSeg1 = CAN_BS1_7TQ;
+ hcan1.Init.TimeSeg2 = CAN_BS2_1TQ;
+ hcan1.Init.TimeTriggeredMode = DISABLE;
+ hcan1.Init.AutoBusOff = ENABLE;
+ hcan1.Init.AutoWakeUp = DISABLE;
+ hcan1.Init.AutoRetransmission = ENABLE;
+ hcan1.Init.ReceiveFifoLocked = DISABLE;
+ hcan1.Init.TransmitFifoPriority = DISABLE;
+ if (HAL_CAN_Init(&hcan1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN CAN1_Init 2 */
+ /*##-2- Configure the CAN Filter ###########################################*/
+ CAN_FilterTypeDef sFilterConfig;
+ sFilterConfig.FilterBank = 0;
+ sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
+ sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
+ sFilterConfig.FilterIdHigh = 0x0000;
+ sFilterConfig.FilterIdLow = 0x0000;
+ sFilterConfig.FilterMaskIdHigh = 0x0000;
+ sFilterConfig.FilterMaskIdLow = 0x0000;
+ sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
+ sFilterConfig.FilterActivation = ENABLE;
+ sFilterConfig.SlaveStartFilterBank = 14;
+
+ if(HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK)
+ {
+ /* Filter configuration Error */
+ Error_Handler();
+ }
+
+ /*##-3- Start the CAN peripheral ###########################################*/
+ if (HAL_CAN_Start(&hcan1) != HAL_OK)
+ {
+ /* Start Error */
+ Error_Handler();
+ }
+ /* USER CODE END CAN1_Init 2 */
+
+}
/* CAN2 init function */
void MX_CAN2_Init(void)
{
@@ -38,15 +95,15 @@ void MX_CAN2_Init(void)
/* USER CODE END CAN2_Init 1 */
hcan2.Instance = CAN2;
- hcan2.Init.Prescaler = 16;
+ hcan2.Init.Prescaler = 5;
hcan2.Init.Mode = CAN_MODE_NORMAL;
hcan2.Init.SyncJumpWidth = CAN_SJW_1TQ;
- hcan2.Init.TimeSeg1 = CAN_BS1_1TQ;
+ hcan2.Init.TimeSeg1 = CAN_BS1_7TQ;
hcan2.Init.TimeSeg2 = CAN_BS2_1TQ;
hcan2.Init.TimeTriggeredMode = DISABLE;
- hcan2.Init.AutoBusOff = DISABLE;
+ hcan2.Init.AutoBusOff = ENABLE;
hcan2.Init.AutoWakeUp = DISABLE;
- hcan2.Init.AutoRetransmission = DISABLE;
+ hcan2.Init.AutoRetransmission = ENABLE;
hcan2.Init.ReceiveFifoLocked = DISABLE;
hcan2.Init.TransmitFifoPriority = DISABLE;
if (HAL_CAN_Init(&hcan2) != HAL_OK)
@@ -54,23 +111,86 @@ void MX_CAN2_Init(void)
Error_Handler();
}
/* USER CODE BEGIN CAN2_Init 2 */
+ /*##-2- Configure the CAN Filter ###########################################*/
+ CAN_FilterTypeDef sFilterConfig;
+ sFilterConfig.FilterBank = 14;
+ sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
+ sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
+ sFilterConfig.FilterIdHigh = 0x0000;
+ sFilterConfig.FilterIdLow = 0x0000;
+ sFilterConfig.FilterMaskIdHigh = 0x0000;
+ sFilterConfig.FilterMaskIdLow = 0x0000;
+ sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
+ sFilterConfig.FilterActivation = ENABLE;
+ sFilterConfig.SlaveStartFilterBank = 14;
+ if(HAL_CAN_ConfigFilter(&hcan2, &sFilterConfig) != HAL_OK)
+ {
+ /* Filter configuration Error */
+ Error_Handler();
+ }
+
+ /*##-3- Start the CAN peripheral ###########################################*/
+ if (HAL_CAN_Start(&hcan2) != HAL_OK)
+ {
+ /* Start Error */
+ Error_Handler();
+ }
/* USER CODE END CAN2_Init 2 */
}
+static uint32_t HAL_RCC_CAN1_CLK_ENABLED=0;
+
void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(canHandle->Instance==CAN2)
+ if(canHandle->Instance==CAN1)
+ {
+ /* USER CODE BEGIN CAN1_MspInit 0 */
+
+ /* USER CODE END CAN1_MspInit 0 */
+ /* CAN1 clock enable */
+ HAL_RCC_CAN1_CLK_ENABLED++;
+ if(HAL_RCC_CAN1_CLK_ENABLED==1){
+ __HAL_RCC_CAN1_CLK_ENABLE();
+ }
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**CAN1 GPIO Configuration
+ PB8 ------> CAN1_RX
+ PB9 ------> CAN1_TX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_8;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_9;
+ 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(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN CAN1_MspInit 1 */
+
+ /* USER CODE END CAN1_MspInit 1 */
+ }
+ else if(canHandle->Instance==CAN2)
{
/* USER CODE BEGIN CAN2_MspInit 0 */
/* USER CODE END CAN2_MspInit 0 */
/* CAN2 clock enable */
__HAL_RCC_CAN2_CLK_ENABLE();
- __HAL_RCC_CAN1_CLK_ENABLE();
+ HAL_RCC_CAN1_CLK_ENABLED++;
+ if(HAL_RCC_CAN1_CLK_ENABLED==1){
+ __HAL_RCC_CAN1_CLK_ENABLE();
+ }
__HAL_RCC_GPIOB_CLK_ENABLE();
/**CAN2 GPIO Configuration
@@ -93,14 +213,38 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
{
- if(canHandle->Instance==CAN2)
+ if(canHandle->Instance==CAN1)
+ {
+ /* USER CODE BEGIN CAN1_MspDeInit 0 */
+
+ /* USER CODE END CAN1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ HAL_RCC_CAN1_CLK_ENABLED--;
+ if(HAL_RCC_CAN1_CLK_ENABLED==0){
+ __HAL_RCC_CAN1_CLK_DISABLE();
+ }
+
+ /**CAN1 GPIO Configuration
+ PB8 ------> CAN1_RX
+ PB9 ------> CAN1_TX
+ */
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9);
+
+ /* USER CODE BEGIN CAN1_MspDeInit 1 */
+
+ /* USER CODE END CAN1_MspDeInit 1 */
+ }
+ else if(canHandle->Instance==CAN2)
{
/* USER CODE BEGIN CAN2_MspDeInit 0 */
/* USER CODE END CAN2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_CAN2_CLK_DISABLE();
- __HAL_RCC_CAN1_CLK_DISABLE();
+ HAL_RCC_CAN1_CLK_ENABLED--;
+ if(HAL_RCC_CAN1_CLK_ENABLED==0){
+ __HAL_RCC_CAN1_CLK_DISABLE();
+ }
/**CAN2 GPIO Configuration
PB12 ------> CAN2_RX
@@ -108,9 +252,6 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
*/
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13);
- /* CAN2 interrupt Deinit */
- HAL_NVIC_DisableIRQ(CAN2_RX0_IRQn);
- HAL_NVIC_DisableIRQ(CAN2_RX1_IRQn);
/* USER CODE BEGIN CAN2_MspDeInit 1 */
/* USER CODE END CAN2_MspDeInit 1 */
diff --git a/Src/main.c b/Src/main.c
index 0e802ce..5b0d228 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -27,7 +27,9 @@
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
+#include "CAN_API.h"
#include "InitDrive.h"
+
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -69,47 +71,49 @@ static void MX_NVIC_Init(void);
/* USER CODE END 0 */
/**
- * @brief The application entry point.
- * @retval int
- */
-int main(void) {
- /* USER CODE BEGIN 1 */
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* USER CODE BEGIN 1 */
__disable_irq();
- /* USER CODE END 1 */
+ /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
+ /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
- /* USER CODE BEGIN Init */
+ /* USER CODE BEGIN Init */
SysTick_Config(0xFFFFFF);
LL_DBGMCU_APB1_GRP1_FreezePeriph( LL_DBGMCU_APB1_GRP1_TIM3_STOP);
LL_DBGMCU_APB1_GRP1_FreezePeriph( LL_DBGMCU_APB1_GRP1_TIM2_STOP);
LL_DBGMCU_APB2_GRP1_FreezePeriph( LL_DBGMCU_APB2_GRP1_TIM1_STOP);
LL_DBGMCU_APB2_GRP1_FreezePeriph( LL_DBGMCU_APB2_GRP1_TIM8_STOP);
- /* USER CODE END Init */
+ /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
+ /* Configure the system clock */
+ SystemClock_Config();
- /* USER CODE BEGIN SysInit */
+ /* USER CODE BEGIN SysInit */
SystemCoreClockUpdate();
- /* USER CODE END SysInit */
+ /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_ADC1_Init();
- MX_TIM1_Init();
- MX_USART1_UART_Init();
- MX_USART2_UART_Init();
- MX_CAN2_Init();
- MX_TIM2_Init();
- MX_SPI2_Init();
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_ADC1_Init();
+ MX_TIM1_Init();
+ MX_USART1_UART_Init();
+ MX_USART2_UART_Init();
+ MX_TIM2_Init();
+ MX_SPI2_Init();
+ MX_CAN1_Init();
+ MX_CAN2_Init();
- /* Initialize interrupts */
- MX_NVIC_Init();
- /* USER CODE BEGIN 2 */
+ /* Initialize interrupts */
+ MX_NVIC_Init();
+ /* USER CODE BEGIN 2 */
LL_GPIO_ResetOutputPin(LED1_GPIO_Port, LED1_Pin);
LL_GPIO_ResetOutputPin(LED2_GPIO_Port, LED2_Pin);
@@ -131,24 +135,27 @@ int main(void) {
LL_TIM_EnableCounter(TIM2);
LL_GPIO_SetOutputPin(AS5045_CS_GPIO_Port, AS5045_CS_Pin);
- LL_SPI_SetBaudRatePrescaler(SPI2,LL_SPI_BAUDRATEPRESCALER_DIV64 );
+ LL_SPI_SetBaudRatePrescaler(SPI2, LL_SPI_BAUDRATEPRESCALER_DIV64);
LL_SPI_Enable(SPI2);
/*Init Control structure*/
float TSAMPLE_FAST = 1.f / PWM_FRQ_HZ;
float TSAMPLE_SLOW = 1.f / ALG_TIMER_HZ;
DriveInit(TSAMPLE_FAST, TSAMPLE_SLOW);
+
+ //initCAN(CAN_BAUD_1000);
__enable_irq();
- /* USER CODE END 2 */
+ /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
while (1) {
- /* USER CODE END WHILE */
+ /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
+ /* USER CODE BEGIN 3 */
if (!LL_SPI_IsActiveFlag_OVR(SPI2)) {
LL_GPIO_ResetOutputPin(AS5045_CS_GPIO_Port, AS5045_CS_Pin);
- while (!LL_SPI_IsActiveFlag_TXE(SPI2)){};
+ while (!LL_SPI_IsActiveFlag_TXE(SPI2)) {
+ };
LL_SPI_TransmitData16(SPI2, 0xFFFF);
while (!LL_SPI_IsActiveFlag_RXNE(SPI2)) {
}
@@ -159,79 +166,114 @@ int main(void) {
} else {
LL_SPI_ClearFlag_OVR(SPI2);
}
+ CAN_TxHeaderTypeDef txheader;
+ uint8_t txdata[8];
+ txheader.DLC = 8;
+ txheader.ExtId = 0x11111111;
+ txheader.IDE = CAN_ID_STD;
+ txheader.RTR = CAN_RTR_DATA;
+ for (uint8_t i = 0; i < 8; i++) {
+ txdata[i] = i;
+ }
+ static uint32_t txMailBox = 0;
+ if (HAL_CAN_AddTxMessage(&hcan2, &txheader, txdata,
+ (uint32_t*) &txMailBox) != HAL_OK) {
+ HAL_CAN_AbortTxRequest(&hcan2,
+ CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2);
+ }
+ /*
+ if (HAL_CAN_AddTxMessage(&hcan1, &txheader, txdata,
+ (uint32_t*) &txMailBox) != HAL_OK) {
+ HAL_CAN_AbortTxRequest(&hcan1,
+ CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2);
+ }
+ if (HAL_CAN_AddTxMessage(&hcan2, &txheader, txdata,
+ (uint32_t*) &txMailBox) != HAL_OK) {
+ HAL_CAN_AbortTxRequest(&hcan2,
+ CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2);
+ }
+ */
+ HAL_Delay(10);
+ static uint16_t state =0;
+ //state = HAL_CAN_GetState(&hcan2);
+ //LL_GPIO_TogglePin(CAN2_RX_GPIO_Port, CAN2_RX_Pin);
+ //LL_GPIO_TogglePin(CAN2_TX_GPIO_Port, CAN2_TX_Pin);
+
}
- /* USER CODE END 3 */
+ /* USER CODE END 3 */
}
/**
- * @brief System Clock Configuration
- * @retval None
- */
-void SystemClock_Config(void) {
- LL_FLASH_SetLatency(LL_FLASH_LATENCY_5);
- while (LL_FLASH_GetLatency() != LL_FLASH_LATENCY_5) {
- }
- LL_PWR_SetRegulVoltageScaling(LL_PWR_REGU_VOLTAGE_SCALE1);
- LL_PWR_EnableOverDriveMode();
- LL_RCC_HSE_Enable();
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
- /* Wait till HSE is ready */
- while (LL_RCC_HSE_IsReady() != 1) {
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
- }
- LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_4, 180,
- LL_RCC_PLLP_DIV_2);
- LL_RCC_PLL_Enable();
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 4;
+ RCC_OscInitStruct.PLL.PLLN = 180;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+ RCC_OscInitStruct.PLL.PLLQ = 2;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
- /* Wait till PLL is ready */
- while (LL_RCC_PLL_IsReady() != 1) {
+ /** Activate the Over-Drive mode
+ */
+ if (HAL_PWREx_EnableOverDrive() != HAL_OK)
+ {
+ Error_Handler();
+ }
- }
- LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
- LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_4);
- LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_2);
- LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
- /* Wait till System clock is ready */
- while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) {
-
- }
- LL_SetSystemCoreClock(180000000);
-
- /* Update the time base */
- if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) {
- Error_Handler();
- }
- LL_RCC_SetTIMPrescaler(LL_RCC_TIM_PRESCALER_TWICE);
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
+ {
+ Error_Handler();
+ }
}
/**
- * @brief NVIC Configuration.
- * @retval None
- */
-static void MX_NVIC_Init(void) {
- /* TIM1_BRK_TIM9_IRQn interrupt configuration */
- NVIC_SetPriority(TIM1_BRK_TIM9_IRQn,
- NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 1, 0));
- NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn);
- /* TIM1_CC_IRQn interrupt configuration */
- NVIC_SetPriority(TIM1_CC_IRQn,
- NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 3, 0));
- NVIC_EnableIRQ(TIM1_CC_IRQn);
- /* TIM2_IRQn interrupt configuration */
- NVIC_SetPriority(TIM2_IRQn,
- NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 4, 0));
- NVIC_EnableIRQ(TIM2_IRQn);
- /* ADC_IRQn interrupt configuration */
- NVIC_SetPriority(ADC_IRQn,
- NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 2, 0));
- NVIC_EnableIRQ(ADC_IRQn);
- /* CAN2_RX0_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(CAN2_RX0_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(CAN2_RX0_IRQn);
- /* CAN2_RX1_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(CAN2_RX1_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(CAN2_RX1_IRQn);
+ * @brief NVIC Configuration.
+ * @retval None
+ */
+static void MX_NVIC_Init(void)
+{
+ /* TIM1_BRK_TIM9_IRQn interrupt configuration */
+ NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),1, 0));
+ NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn);
+ /* TIM1_CC_IRQn interrupt configuration */
+ NVIC_SetPriority(TIM1_CC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),3, 0));
+ NVIC_EnableIRQ(TIM1_CC_IRQn);
+ /* TIM2_IRQn interrupt configuration */
+ NVIC_SetPriority(TIM2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),4, 0));
+ NVIC_EnableIRQ(TIM2_IRQn);
+ /* ADC_IRQn interrupt configuration */
+ NVIC_SetPriority(ADC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),2, 0));
+ NVIC_EnableIRQ(ADC_IRQn);
}
/* USER CODE BEGIN 4 */
@@ -239,16 +281,17 @@ static void MX_NVIC_Init(void) {
/* USER CODE END 4 */
/**
- * @brief This function is executed in case of error occurrence.
- * @retval None
- */
-void Error_Handler(void) {
- /* USER CODE BEGIN Error_Handler_Debug */
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1) {
}
- /* USER CODE END Error_Handler_Debug */
+ /* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT
diff --git a/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c
index 7711d95..ae7efaa 100644
--- a/Src/stm32f4xx_it.c
+++ b/Src/stm32f4xx_it.c
@@ -55,7 +55,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-extern CAN_HandleTypeDef hcan2;
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
@@ -251,34 +251,6 @@ void TIM2_IRQHandler(void)
/* USER CODE END TIM2_IRQn 1 */
}
-/**
- * @brief This function handles CAN2 RX0 interrupt.
- */
-void CAN2_RX0_IRQHandler(void)
-{
- /* USER CODE BEGIN CAN2_RX0_IRQn 0 */
-
- /* USER CODE END CAN2_RX0_IRQn 0 */
- HAL_CAN_IRQHandler(&hcan2);
- /* USER CODE BEGIN CAN2_RX0_IRQn 1 */
-
- /* USER CODE END CAN2_RX0_IRQn 1 */
-}
-
-/**
- * @brief This function handles CAN2 RX1 interrupt.
- */
-void CAN2_RX1_IRQHandler(void)
-{
- /* USER CODE BEGIN CAN2_RX1_IRQn 0 */
-
- /* USER CODE END CAN2_RX1_IRQn 0 */
- HAL_CAN_IRQHandler(&hcan2);
- /* USER CODE BEGIN CAN2_RX1_IRQn 1 */
-
- /* USER CODE END CAN2_RX1_IRQn 1 */
-}
-
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
diff --git a/processor32f446.ioc b/processor32f446.ioc
index 1be850e..18359c0 100644
--- a/processor32f446.ioc
+++ b/processor32f446.ioc
@@ -24,26 +24,41 @@ ADC1.master=1
CAD.formats=
CAD.pinconfig=
CAD.provider=
-CAN2.CalculateBaudRate=937500
-CAN2.CalculateTimeBit=1066
-CAN2.CalculateTimeQuantum=355.55555555555554
-CAN2.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate
+CAN1.ABOM=ENABLE
+CAN1.BS1=CAN_BS1_7TQ
+CAN1.CalculateBaudRate=1000000
+CAN1.CalculateTimeBit=1000
+CAN1.CalculateTimeQuantum=111.11111111111111
+CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,Mode,SJW,ABOM,NART,BS1
+CAN1.Mode=CAN_MODE_LOOPBACK
+CAN1.NART=ENABLE
+CAN1.Prescaler=5
+CAN1.SJW=CAN_SJW_1TQ
+CAN2.ABOM=ENABLE
+CAN2.BS1=CAN_BS1_7TQ
+CAN2.CalculateBaudRate=1000000
+CAN2.CalculateTimeBit=1000
+CAN2.CalculateTimeQuantum=111.11111111111111
+CAN2.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,BS1,ABOM,NART
+CAN2.NART=ENABLE
+CAN2.Prescaler=5
File.Version=6
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32F446RET6
Mcu.Family=STM32F4
Mcu.IP0=ADC1
-Mcu.IP1=CAN2
-Mcu.IP2=NVIC
-Mcu.IP3=RCC
-Mcu.IP4=SPI2
-Mcu.IP5=SYS
-Mcu.IP6=TIM1
-Mcu.IP7=TIM2
-Mcu.IP8=USART1
-Mcu.IP9=USART2
-Mcu.IPNb=10
+Mcu.IP1=CAN1
+Mcu.IP10=USART2
+Mcu.IP2=CAN2
+Mcu.IP3=NVIC
+Mcu.IP4=RCC
+Mcu.IP5=SPI2
+Mcu.IP6=SYS
+Mcu.IP7=TIM1
+Mcu.IP8=TIM2
+Mcu.IP9=USART1
+Mcu.IPNb=11
Mcu.Name=STM32F446R(C-E)Tx
Mcu.Package=LQFP64
Mcu.Pin0=PH0-OSC_IN
@@ -71,16 +86,18 @@ Mcu.Pin28=PD2
Mcu.Pin29=PB6
Mcu.Pin3=PA0-WKUP
Mcu.Pin30=PB7
-Mcu.Pin31=VP_SYS_VS_Systick
-Mcu.Pin32=VP_TIM1_VS_no_output4
-Mcu.Pin33=VP_TIM2_VS_ClockSourceINT
+Mcu.Pin31=PB8
+Mcu.Pin32=PB9
+Mcu.Pin33=VP_SYS_VS_Systick
+Mcu.Pin34=VP_TIM1_VS_no_output4
+Mcu.Pin35=VP_TIM2_VS_ClockSourceINT
Mcu.Pin4=PA1
Mcu.Pin5=PA2
Mcu.Pin6=PA3
Mcu.Pin7=PA4
Mcu.Pin8=PA5
Mcu.Pin9=PA6
-Mcu.PinsNb=34
+Mcu.PinsNb=36
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F446RETx
@@ -88,13 +105,11 @@ MxCube.Version=6.7.0
MxDb.Version=DB.6.0.70
NVIC.ADC_IRQn=true\:2\:0\:true\:true\:true\:4\:true\:true\:true
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
-NVIC.CAN2_RX0_IRQn=true\:5\:0\:true\:true\:true\:5\:true\:true\:true
-NVIC.CAN2_RX1_IRQn=true\:5\:0\:true\:true\:true\:6\:true\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
-NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -139,7 +154,6 @@ PB1.Locked=true
PB1.Signal=ADCx_IN9
PB10.Mode=Full_Duplex_Master
PB10.Signal=SPI2_SCK
-PB12.Locked=true
PB12.Mode=CAN_Activate
PB12.Signal=CAN2_RX
PB13.Mode=CAN_Activate
@@ -158,6 +172,14 @@ PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
PB7.Mode=Asynchronous
PB7.Signal=USART1_RX
+PB8.GPIOParameters=GPIO_PuPd
+PB8.GPIO_PuPd=GPIO_PULLUP
+PB8.Locked=true
+PB8.Mode=CAN_Activate
+PB8.Signal=CAN1_RX
+PB9.Locked=true
+PB9.Mode=CAN_Activate
+PB9.Signal=CAN1_TX
PC1.Mode=Full_Duplex_Master
PC1.Signal=SPI2_MOSI
PC10.GPIOParameters=GPIO_Label
@@ -216,7 +238,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=STM32CubeIDE
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-LL-true,2-SystemClock_Config-RCC-false-LL-false,3-MX_ADC1_Init-ADC1-false-LL-true,4-MX_ADC2_Init-ADC2-false-LL-true,5-MX_ADC3_Init-ADC3-false-LL-true,6-MX_TIM1_Init-TIM1-false-LL-true,7-MX_USART1_UART_Init-USART1-false-LL-true,8-MX_USART2_UART_Init-USART2-false-LL-true,9-MX_CAN2_Init-CAN2-false-HAL-true,10-MX_TIM2_Init-TIM2-false-LL-true,11-MX_SPI2_Init-SPI2-false-LL-true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-LL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-LL-true,4-MX_TIM1_Init-TIM1-false-LL-true,5-MX_USART1_UART_Init-USART1-false-LL-true,6-MX_USART2_UART_Init-USART2-false-LL-true,7-MX_TIM2_Init-TIM2-false-LL-true,8-MX_SPI2_Init-SPI2-false-LL-true,9-MX_CAN1_Init-CAN1-false-HAL-true
RCC.AHBFreq_Value=180000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
RCC.APB1Freq_Value=45000000