diff --git a/.mxproject b/.mxproject index ba68a87..1076ece 100644 --- a/.mxproject +++ b/.mxproject @@ -1,5 +1,5 @@ [PreviousLibFiles] -LibFiles=Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_def.h;Drivers\STM32L0xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_bus.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_crs.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_system.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_utils.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ramfunc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_usart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_lpuart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart_ex.h;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_exti.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_def.h;Drivers\STM32L0xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_bus.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_crs.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_system.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_utils.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ramfunc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_usart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_lpuart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart_ex.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\stm32l073xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\stm32l0xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\system_stm32l0xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Source\Templates\system_stm32l0xx.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\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_def.h;Drivers\STM32L0xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_bus.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_crs.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_system.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_utils.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ramfunc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_usart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_lpuart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart_ex.h;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_exti.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_tim.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_tim_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_def.h;Drivers\STM32L0xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_i2c_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_rcc_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_bus.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_rcc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_crs.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_system.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_utils.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ramfunc.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_flash_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_gpio_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_gpio.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_dma_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_dma.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_pwr_ex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_pwr.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_cortex.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_exti.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_usart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_ll_lpuart.h;Drivers\STM32L0xx_HAL_Driver\Inc\stm32l0xx_hal_uart_ex.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\stm32l073xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\stm32l0xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\system_stm32l0xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Include\system_stm32l0xx.h;Drivers\CMSIS\Device\ST\STM32L0xx\Source\Templates\system_stm32l0xx.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=Core\Src\main.c;Core\Src\stm32l0xx_it.c;Core\Src\stm32l0xx_hal_msp.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_exti.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c;Drivers\CMSIS\Device\ST\STM32L0xx\Source\Templates\system_stm32l0xx.c;Core\Src\system_stm32l0xx.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_tim_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_exti.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c;Drivers\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c;Drivers\CMSIS\Device\ST\STM32L0xx\Source\Templates\system_stm32l0xx.c;Core\Src\system_stm32l0xx.c;;; diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index 1a04772..f23fafe 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/ControleMoteur2.ioc b/ControleMoteur2.ioc index 9d85c61..42f73f0 100644 --- a/ControleMoteur2.ioc +++ b/ControleMoteur2.ioc @@ -17,26 +17,32 @@ Mcu.Name=STM32L073R(B-Z)Tx Mcu.Package=LQFP64 Mcu.Pin0=PC13 Mcu.Pin1=PC14-OSC32_IN -Mcu.Pin10=PC9 -Mcu.Pin11=PA13 -Mcu.Pin12=PA14 -Mcu.Pin13=PC10 -Mcu.Pin14=VP_SYS_VS_Systick -Mcu.Pin15=VP_TIM3_VS_ClockSourceINT +Mcu.Pin10=PA5 +Mcu.Pin11=PC6 +Mcu.Pin12=PC7 +Mcu.Pin13=PC8 +Mcu.Pin14=PC9 +Mcu.Pin15=PA13 +Mcu.Pin16=PA14 +Mcu.Pin17=PC10 +Mcu.Pin18=VP_SYS_VS_Systick +Mcu.Pin19=VP_TIM3_VS_ClockSourceINT Mcu.Pin2=PC15-OSC32_OUT Mcu.Pin3=PH0-OSC_IN -Mcu.Pin4=PA2 -Mcu.Pin5=PA3 -Mcu.Pin6=PA5 -Mcu.Pin7=PC6 -Mcu.Pin8=PC7 -Mcu.Pin9=PC8 -Mcu.PinsNb=16 +Mcu.Pin4=PC0 +Mcu.Pin5=PC1 +Mcu.Pin6=PC2 +Mcu.Pin7=PC3 +Mcu.Pin8=PA2 +Mcu.Pin9=PA3 +Mcu.PinsNb=20 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32L073RZTx -MxCube.Version=6.10.0 -MxDb.Version=DB.6.0.100 +MxCube.Version=6.13.0 +MxDb.Version=DB.6.0.130 +NVIC.EXTI0_1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.EXTI2_3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.ForceEnableDMAVector=true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false @@ -67,6 +73,10 @@ PA5.GPIOParameters=GPIO_Label PA5.GPIO_Label=LD2 [Green Led] PA5.Locked=true PA5.Signal=GPIO_Output +PC0.Locked=true +PC0.Signal=GPXTI0 +PC1.Locked=true +PC1.Signal=GPXTI1 PC10.Locked=true PC10.Signal=GPIO_Output PC13.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI @@ -80,6 +90,10 @@ PC14-OSC32_IN.Signal=RCC_OSC32_IN PC15-OSC32_OUT.Locked=true PC15-OSC32_OUT.Mode=LSE-External-Oscillator PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +PC2.Locked=true +PC2.Signal=GPXTI2 +PC3.Locked=true +PC3.Signal=GPXTI3 PC6.Locked=true PC6.Signal=S_TIM3_CH1 PC7.Locked=true @@ -159,8 +173,16 @@ RCC.USART1Freq_Value=16000000 RCC.USART2Freq_Value=16000000 RCC.VCOOutputFreq_Value=48000000 RCC.WatchDogFreq_Value=37000 +SH.GPXTI0.0=GPIO_EXTI0 +SH.GPXTI0.ConfNb=1 +SH.GPXTI1.0=GPIO_EXTI1 +SH.GPXTI1.ConfNb=1 SH.GPXTI13.0=GPIO_EXTI13 SH.GPXTI13.ConfNb=1 +SH.GPXTI2.0=GPIO_EXTI2 +SH.GPXTI2.ConfNb=1 +SH.GPXTI3.0=GPIO_EXTI3 +SH.GPXTI3.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 diff --git a/Core/Inc/encoder.h b/Core/Inc/encoder.h new file mode 100644 index 0000000..b3b9824 --- /dev/null +++ b/Core/Inc/encoder.h @@ -0,0 +1,45 @@ +/* + * encoder.h + * + * Created on: Mar 8, 2025 + * Author: allan + */ + +#include "stm32l0xx_hal.h" + +#ifndef INC_ENCODER_H_ +#define INC_ENCODER_H_ + +typedef enum { + EncoderInputUndefined, + EncoderInputHigh, + EncoderInputLow, +} EncoderInputState; + +typedef enum { + EncoderDirectionUndefined, + EncoderDirectionForward, + EncoderDirectionBackward, +} EncoderDirection; + +class Encoder { +private: + int32_t totalDistance; + int32_t latestHandledDistance; + uint16_t tickDistance; + volatile uint32_t* inputAgpioIDRaddr; + uint32_t inputAgpioIDRMask; + volatile uint32_t* inputBgpioIDRaddr; + uint32_t inputBgpioIDRMask; + void (*handler)(uint16_t totalDistance, uint16_t newDistance, bool direction); // direction = (1 : forward, 0 : backward) + +public: + Encoder(uint16_t wheelDiameter, uint16_t encoderResolution, volatile uint32_t* inputAgpioIDRaddr, volatile uint32_t* inputBgpioIDRaddr, uint32_t inputAgpioIDRMask, uint32_t inputBgpioIDRMask, void (*handler)(uint16_t, uint16_t, bool)); + void trigger(bool pinTriggered);// pin = (0 : A, 1 : B) + int32_t Encoder::getTotalDistance(); + int32_t Encoder::getDistanceSinceLastCall(); + void Encoder::resetToZero(); + virtual ~Encoder(); +}; + +#endif /* INC_ENCODER_H_ */ diff --git a/Core/Inc/stm32l0xx_it.h b/Core/Inc/stm32l0xx_it.h index c0087c3..b2c6196 100644 --- a/Core/Inc/stm32l0xx_it.h +++ b/Core/Inc/stm32l0xx_it.h @@ -51,6 +51,8 @@ void HardFault_Handler(void); void SVC_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void EXTI0_1_IRQHandler(void); +void EXTI2_3_IRQHandler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ diff --git a/Core/Src/encoder.cpp b/Core/Src/encoder.cpp new file mode 100644 index 0000000..1f1fb09 --- /dev/null +++ b/Core/Src/encoder.cpp @@ -0,0 +1,94 @@ +/* + * encoder.cpp + * + * Created on: Mar 8, 2025 + * Author: allan + */ + +#include + +Encoder::Encoder(uint16_t wheelDiameter, uint16_t encoderResolution, volatile uint32_t* inputAgpioIDRaddr, volatile uint32_t* inputBgpioIDRaddr, uint32_t inputAgpioIDRMask, uint32_t inputBgpioIDRMask, void(*handler)(uint16_t, uint16_t, bool)) : handler(handler), inputAgpioIDRaddr(inputAgpioIDRaddr), inputBgpioIDRaddr(inputBgpioIDRaddr), inputAgpioIDRMask(inputAgpioIDRMask), inputBgpioIDRMask(inputBgpioIDRMask), totalDistance(0), latestHandledDistance(0) { + this->tickDistance = (uint16_t)(wheelDiameter * 3.14 / encoderResolution); +} + +void Encoder::trigger(bool pinTriggered){ + //On sait qu'on avance d'un tick et on connait quel pin vient de changer de valeur : on cherche a determiner la direction de deplacement + EncoderDirection direction = EncoderDirectionUndefined; + EncoderInputState pinAstate = EncoderInputUndefined; + EncoderInputState pinBstate = EncoderInputUndefined; + if(*(this->inputAgpioIDRaddr) & inputAgpioIDRMask == inputAgpioIDRMask){ + pinAstate = EncoderInputHigh; + } + if(*(this->inputAgpioIDRaddr) & inputAgpioIDRMask == 0){ + pinAstate = EncoderInputLow; + } + if(*(this->inputBgpioIDRaddr) & inputBgpioIDRMask == inputBgpioIDRMask){ + pinBstate = EncoderInputHigh; + } + if(*(this->inputBgpioIDRaddr) & inputBgpioIDRMask == 0){ + pinBstate = EncoderInputLow; + } + if(pinTriggered == 0){ // Interrupt venant du fil A + if(pinAstate == EncoderInputHigh){ + if(pinBstate == EncoderInputHigh){ + direction = EncoderDirectionBackward; + } else if(pinBstate == EncoderInputLow){ + direction = EncoderDirectionForward; + } + } else if(pinAstate == EncoderInputLow) { + if(pinBstate == EncoderInputHigh){ + direction = EncoderDirectionForward; + } else if(pinBstate == EncoderInputLow) { + direction = EncoderDirectionBackward; + } + } + } else if(pinTriggered == 1){ //Interrupt venant du fil B + if(pinAstate == EncoderInputHigh){ + if(pinBstate == EncoderInputHigh){ + direction = EncoderDirectionForward; + } else if(pinBstate == EncoderInputLow){ + direction = EncoderDirectionBackward; + } + } else if(pinAstate == EncoderInputLow) { + if(pinBstate == EncoderInputHigh){ + direction = EncoderDirectionBackward; + } else if(pinBstate == EncoderInputLow) { + direction = EncoderDirectionForward; + } + } + } else { + return; // error + } + if(direction == EncoderDirectionForward){ + // On ajoute la distance parcourue et on appelle le handler + this->totalDistance += (int32_t)this->tickDistance; + this->handler(this->totalDistance, this->tickDiameter, 1); + } else if(direction == EncoderDirectionBackward){ + // On retire la distance parcourue et on appelle le handler + this->totalDistance -= (int32_t)this->tickDistance; + this->handler(this->totalDistance, this->tickDiameter, 0); + } else { + return; //error + } + +} + +uint32_t Encoder::getTotalDistance(){ + return this->totalDistance; +} + +uint32_t Encoder::getDistanceSinceLastCall(){ + uint32_t result = this->totalDistance - this->latestHandledDistance; + this->latestHandledDistance = this->totalDistance; + return result; +} + +void Encoder::resetToZero(){ + this->totalDistance = 0; + this->latestHandledDistance = 0; +} + +Encoder::~Encoder() { + // TODO Auto-generated destructor stub +} + diff --git a/Core/Src/main.c b/Core/Src/main.c new file mode 100644 index 0000000..a2f719c --- /dev/null +++ b/Core/Src/main.c @@ -0,0 +1,361 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +TIM_HandleTypeDef htim3; + +UART_HandleTypeDef huart2; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_USART2_UART_Init(void); +static void MX_TIM3_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_USART2_UART_Init(); + MX_TIM3_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** 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_HSI; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2; + PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + htim3.Init.Prescaler = 0; + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + htim3.Init.Period = 639; + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIMEx_RemapConfig(&htim3, TIM3_TI1_GPIO|TIM3_TI4_GPIOC9_AF2) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + +} + +/** + * @brief USART2 Initialization Function + * @param None + * @retval None + */ +static void MX_USART2_UART_Init(void) +{ + + /* USER CODE BEGIN USART2_Init 0 */ + + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + huart2.Init.BaudRate = 115200; + huart2.Init.WordLength = UART_WORDLENGTH_8B; + huart2.Init.StopBits = UART_STOPBITS_1; + huart2.Init.Parity = UART_PARITY_NONE; + huart2.Init.Mode = UART_MODE_TX_RX; + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; +/* USER CODE BEGIN MX_GPIO_Init_1 */ +/* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET); + + /*Configure GPIO pin : B1_Pin */ + GPIO_InitStruct.Pin = B1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : PC0 PC1 PC2 PC3 */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pin : LD2_Pin */ + GPIO_InitStruct.Pin = LD2_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : PC10 */ + GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI0_1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI0_1_IRQn); + + HAL_NVIC_SetPriority(EXTI2_3_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI2_3_IRQn); + +/* USER CODE BEGIN MX_GPIO_Init_2 */ +/* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* 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 */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/Core/Src/main.cpp b/Core/Src/main.cpp index 8cc325c..b770956 100644 --- a/Core/Src/main.cpp +++ b/Core/Src/main.cpp @@ -19,6 +19,8 @@ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "functions.h" +#include +#include /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -60,7 +62,15 @@ static void MX_TIM3_Init(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ - +void handleEncoderProgression(uint16_t totalDistance, uint16_t newDistance, bool direction){ + char msg[128]; + if(direction == 0){ + sprintf(msg, "Encodeur recule de %d mm, distance totale parcourue : %d mm.\r\n\0", newDistance, totalDistance); + } else if(direction == 1){ + sprintf(msg, "Encodeur avance de %d mm, distance totale parcourue : %d mm.\r\n\0", newDistance, totalDistance); + } + HAL_UART_Transmit(&huart2, (uint8_t *)msg, strlen(msg), HAL_MAX_DELAY); +} /* USER CODE END 0 */ /** @@ -99,10 +109,12 @@ int main(void) { HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); + // Initialisation encodeur1 avec roue 60cm, resolution 600 pts par tour, entree A sur PC0, entree B sur PC2 + Encoder encoder1(60000, 600, &GPIOC->IDR, &GPIOC->IDR, (1<<0), (1<<2), &handleEncoderProgression); Motor motor(TIM3); //On fait accélérer les moteurs - motor.accelerer(626); + //motor.accelerer(626); /* USER CODE END 2 */ @@ -113,7 +125,7 @@ int main(void) { /* USER CODE BEGIN 3 */ - Cpploop(&motor); + //Cpploop(&motor); } /* USER CODE END 3 */ @@ -271,44 +283,58 @@ static void MX_USART2_UART_Init(void) { * @param None * @retval None */ -static void MX_GPIO_Init(void) { - GPIO_InitTypeDef GPIO_InitStruct = { 0 }; - /* USER CODE BEGIN MX_GPIO_Init_1 */ - /* USER CODE END MX_GPIO_Init_1 */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; +/* USER CODE BEGIN MX_GPIO_Init_1 */ +/* USER CODE END MX_GPIO_Init_1 */ - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOH_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET); - /*Configure GPIO pin : B1_Pin */ - GPIO_InitStruct.Pin = B1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : B1_Pin */ + GPIO_InitStruct.Pin = B1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pin : LD2_Pin */ - GPIO_InitStruct.Pin = LD2_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pins : PC1 PC2 */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pin : PC10 */ - GPIO_InitStruct.Pin = GPIO_PIN_10; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + /*Configure GPIO pin : LD2_Pin */ + GPIO_InitStruct.Pin = LD2_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct); - /* USER CODE BEGIN MX_GPIO_Init_2 */ - /* USER CODE END MX_GPIO_Init_2 */ + /*Configure GPIO pin : PC10 */ + GPIO_InitStruct.Pin = GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI0_1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI0_1_IRQn); + + HAL_NVIC_SetPriority(EXTI2_3_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI2_3_IRQn); + +/* USER CODE BEGIN MX_GPIO_Init_2 */ +/* USER CODE END MX_GPIO_Init_2 */ } /* USER CODE BEGIN 4 */ diff --git a/Core/Src/stm32l0xx_hal_msp.c b/Core/Src/stm32l0xx_hal_msp.c index 5b05388..72da193 100644 --- a/Core/Src/stm32l0xx_hal_msp.c +++ b/Core/Src/stm32l0xx_hal_msp.c @@ -20,7 +20,6 @@ /* Includes ------------------------------------------------------------------*/ #include "main.h" - /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ @@ -65,6 +64,7 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); */ void HAL_MspInit(void) { + /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ @@ -97,6 +97,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE BEGIN TIM3_MspInit 1 */ /* USER CODE END TIM3_MspInit 1 */ + } } @@ -184,6 +185,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) /* USER CODE BEGIN USART2_MspInit 1 */ /* USER CODE END USART2_MspInit 1 */ + } } diff --git a/Core/Src/stm32l0xx_it.c b/Core/Src/stm32l0xx_it.c index b3939b9..1dbfd2e 100644 --- a/Core/Src/stm32l0xx_it.c +++ b/Core/Src/stm32l0xx_it.c @@ -140,6 +140,36 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32l0xx.s). */ /******************************************************************************/ +/** + * @brief This function handles EXTI line 0 and line 1 interrupts. + */ +void EXTI0_1_IRQHandler(void) +{ + /* USER CODE BEGIN EXTI0_1_IRQn 0 */ + encoder1.trigger(0); // trigger pin A de l'encodeur sur PC0 + /* USER CODE END EXTI0_1_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); + /* USER CODE BEGIN EXTI0_1_IRQn 1 */ + + /* USER CODE END EXTI0_1_IRQn 1 */ +} + +/** + * @brief This function handles EXTI line 2 and line 3 interrupts. + */ +void EXTI2_3_IRQHandler(void) +{ + /* USER CODE BEGIN EXTI2_3_IRQn 0 */ + encoder1.trigger(1); // trigger pin B de l'encodeur sur PC2 + /* USER CODE END EXTI2_3_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); + /* USER CODE BEGIN EXTI2_3_IRQn 1 */ + + /* USER CODE END EXTI2_3_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */