diff --git a/.mxproject b/.mxproject index 9d85b9e..957f672 100644 --- a/.mxproject +++ b/.mxproject @@ -1,3 +1,11 @@ +[PreviousLibFiles] +LibFiles=Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h;Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_tim.h;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h;Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_tim.h;Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h;Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h;Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h;Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.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; + +[PreviousUsedMakefileFiles] +SourceFiles=Core/Src/main.c;Core/Src/stm32f0xx_it.c;Core/Src/stm32f0xx_hal_msp.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c;Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c;Core/Src/system_stm32f0xx.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c;Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c;Core/Src/system_stm32f0xx.c;;; +HeaderPath=Drivers/STM32F0xx_HAL_Driver/Inc;Drivers/STM32F0xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32F0xx/Include;Drivers/CMSIS/Include;Core/Inc; +CDefines=USE_HAL_DRIVER;STM32F042x6;USE_HAL_DRIVER;USE_HAL_DRIVER; + [PreviousGenFiles] AdvancedFolderStructure=true HeaderFileListSize=3 @@ -15,11 +23,3 @@ SourceFolderListSize=1 SourcePath#0=../Core/Src SourceFiles=; -[PreviousLibFiles] -LibFiles=Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h;Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h;Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h;Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h;Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h;Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h;Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h;Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.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; - -[PreviousUsedMakefileFiles] -SourceFiles=Core/Src/main.c;Core/Src/stm32f0xx_it.c;Core/Src/stm32f0xx_hal_msp.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c;Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c;Core/Src/system_stm32f0xx.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c;Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c;Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c;Core/Src/system_stm32f0xx.c;;; -HeaderPath=Drivers/STM32F0xx_HAL_Driver/Inc;Drivers/STM32F0xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32F0xx/Include;Drivers/CMSIS/Include;Core/Inc; -CDefines=USE_HAL_DRIVER;STM32F042x6;USE_HAL_DRIVER;USE_HAL_DRIVER; - diff --git a/Core/Inc/display.h b/Core/Inc/display.h index 5865087..a804801 100644 --- a/Core/Inc/display.h +++ b/Core/Inc/display.h @@ -1,8 +1,10 @@ #ifndef INC_DISPLAY_H #define INC_DISPLAY_H +#include + void display_init(); -void display_update_voltage(); +void display_update_voltage(int32_t v); void display_update_state(); void display_update(); diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 4822378..428ce4f 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -44,17 +44,33 @@ typedef enum { STATE_ERR_CHARGE, STATE_ERR_DISCHARGE } VPState; + +typedef enum { + ERR_NONE, + ERR_BAT_GT_CHARGE, + ERR_BAT_LT_DISCHARGE, + ERR_VBAT_TOO_LOW, + ERR_VCDC_TOO_LOW, + ERR_OVERVOLTAGE, + ERR_UNDERVOLTAGE, +} ErrReason; /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ /* USER CODE BEGIN EC */ -extern float voltage; +extern int32_t v_bat; +extern int32_t v_charge_discharge; +extern int32_t v_thresh; extern VPState state; +extern ErrReason error; /* USER CODE END EC */ /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ - +#define V_MIN_VOLT 1.0 +#define V_MIN (V_MIN_VOLT * 100) // 0.01V resolution +#define V_MAX 11000 // 0.01V resolution +#define DEBOUNCE_TIME 100 /* USER CODE END EM */ /* Exported functions prototypes ---------------------------------------------*/ @@ -71,12 +87,8 @@ void Error_Handler(void); #define C_D_SEL_GPIO_Port GPIOB #define ENC_S_Pin GPIO_PIN_3 #define ENC_S_GPIO_Port GPIOB -#define ENC_A_Pin GPIO_PIN_4 -#define ENC_A_GPIO_Port GPIOB -#define ENC_B_Pin GPIO_PIN_5 -#define ENC_B_GPIO_Port GPIOB -#define UV_LED_Pin GPIO_PIN_7 -#define UV_LED_GPIO_Port GPIOB +#define ERR_LED_Pin GPIO_PIN_7 +#define ERR_LED_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ diff --git a/Core/Inc/stm32f0xx_hal_conf.h b/Core/Inc/stm32f0xx_hal_conf.h index 91b0261..ef4f785 100644 --- a/Core/Inc/stm32f0xx_hal_conf.h +++ b/Core/Inc/stm32f0xx_hal_conf.h @@ -49,7 +49,7 @@ /*#define HAL_RNG_MODULE_ENABLED */ /*#define HAL_RTC_MODULE_ENABLED */ /*#define HAL_SPI_MODULE_ENABLED */ -/*#define HAL_TIM_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/Core/Src/display.c b/Core/Src/display.c index 9bd9d58..27fdbf8 100644 --- a/Core/Src/display.c +++ b/Core/Src/display.c @@ -7,38 +7,47 @@ #include "ssd1306.h" #include "ssd1306_conf.h" -// printf("%f", ...) doesn't work on STM -static int float_to_str(char *buf, size_t len, float val, - size_t decimal_digits) { - if (len < 2) { - return 0; +#define xstr(a) str(a) +#define str(a) #a + +static const char *err_msg(ErrReason err) { + switch (err) { + case ERR_NONE: + return "UNKNOWN ERR"; + case ERR_BAT_GT_CHARGE: + return "VBAT > VPSU"; + case ERR_BAT_LT_DISCHARGE: + return "VBAT < VLOAD"; + case ERR_VBAT_TOO_LOW: + return "VBAT < " xstr(V_MIN_VOLT); + case ERR_VCDC_TOO_LOW: + if (state == STATE_CHARGE || state == STATE_ERR_CHARGE || + state == STATE_SETUP_CHARGE) { + return "VPSU < " xstr(V_MIN_VOLT); + } else { + return "VLOAD < " xstr(V_MIN_VOLT); + } + case ERR_OVERVOLTAGE: + return "OVERVOLTAGE"; + case ERR_UNDERVOLTAGE: + return "UNDERVOLTAGE"; } - - // len = NUL + decimal digits + . + integer digits - int int_digits = len - decimal_digits - 2; - - int chars = snprintf(buf, len, "%*d", int_digits, (int)val); - buf[chars] = '.'; - chars++; - - val -= (int)val; - for (size_t i = 0; i < decimal_digits; i++) { - val *= 10; - } - return chars + snprintf(buf + chars, len - chars, "%d", (int)val); + return "UNKNOWN ERROR"; } void display_init() { ssd1306_Init(); - display_update_voltage(); + display_update_voltage(v_thresh); ssd1306_WriteChar('V', Font_16x26, White); display_update_state(); ssd1306_UpdateScreen(); } -void display_update_voltage() { +void display_update_voltage(int32_t v) { char voltage_buf[7]; - float_to_str(voltage_buf, sizeof(voltage_buf), voltage, 2); + char *ptr = voltage_buf; + ptr += snprintf(ptr, 4, "%3d", v / 100); + snprintf(ptr, 4, ".%02d", v % 100); ssd1306_SetCursor(0, 38); ssd1306_WriteString(voltage_buf, Font_16x26, White); } @@ -46,6 +55,7 @@ void display_update_voltage() { void display_update_state() { switch (state) { case STATE_SETUP_CHARGE: + display_update_voltage(v_thresh); ssd1306_FillRectangle(0, 0, SSD1306_WIDTH - 1, 30, Black); ssd1306_SetCursor(0, 0); ssd1306_WriteString("Charge", Font_6x8, White); @@ -53,6 +63,7 @@ void display_update_state() { ssd1306_WriteString("Press to close relay", Font_6x8, White); break; case STATE_SETUP_DISCHARGE: + display_update_voltage(v_thresh); ssd1306_FillRectangle(0, 0, SSD1306_WIDTH - 1, 30, Black); ssd1306_SetCursor(0, 0); ssd1306_WriteString("Discharge", Font_6x8, White); @@ -60,34 +71,39 @@ void display_update_state() { ssd1306_WriteString("Press to close relay", Font_6x8, White); break; case STATE_CHARGE: + display_update_voltage(v_bat); ssd1306_FillRectangle(0, 0, SSD1306_WIDTH - 1, 30, Black); ssd1306_SetCursor(0, 0); ssd1306_WriteString("CHARGING", Font_11x18, White); break; case STATE_DISCHARGE: + display_update_voltage(v_bat); ssd1306_FillRectangle(0, 0, SSD1306_WIDTH - 1, 30, Black); ssd1306_SetCursor(0, 0); ssd1306_WriteString("DISCHARGING", Font_11x18, White); break; case STATE_ERR_CHARGE: + display_update_voltage(v_bat); ssd1306_FillRectangle(0, 0, SSD1306_WIDTH - 1, 30, White); + ssd1306_FillRectangle(3, 3, SSD1306_WIDTH - 1 - 3, 30 - 3, Black); ssd1306_SetCursor(10, 5); - ssd1306_WriteString("OVERVOLTAGE", Font_6x8, White); + ssd1306_WriteString("ERROR:", Font_6x8, White); ssd1306_SetCursor(10, 15); - ssd1306_WriteString("DETECTED", Font_6x8, White); + ssd1306_WriteString(err_msg(error), Font_6x8, White); break; case STATE_ERR_DISCHARGE: + display_update_voltage(v_bat); ssd1306_FillRectangle(0, 0, SSD1306_WIDTH - 1, 30, White); + ssd1306_FillRectangle(3, 3, SSD1306_WIDTH - 1 - 3, 30 - 3, Black); ssd1306_SetCursor(10, 5); - ssd1306_WriteString("UNDERVOLTAGE", Font_6x8, White); + ssd1306_WriteString("ERROR:", Font_6x8, White); ssd1306_SetCursor(10, 15); - ssd1306_WriteString("DETECTED", Font_6x8, White); + ssd1306_WriteString(err_msg(error), Font_6x8, White); break; } } void display_update() { - display_update_voltage(); display_update_state(); ssd1306_UpdateScreen(); } diff --git a/Core/Src/main.c b/Core/Src/main.c index 9ab5541..a89bc8a 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -18,13 +18,15 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" -#include "display.h" -#include "stm32f0xx_hal.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ +#include "display.h" #include "ssd1306.h" +#include "stm32f0xx_hal_gpio.h" +#include "stm32f0xx_hal_tim.h" #include + /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -46,9 +48,14 @@ ADC_HandleTypeDef hadc; I2C_HandleTypeDef hi2c1; +TIM_HandleTypeDef htim3; + /* USER CODE BEGIN PV */ -float voltage = 11.5; +int32_t v_bat; +int32_t v_charge_discharge; +int32_t v_thresh = 1150; VPState state = STATE_SETUP_CHARGE; +ErrReason error = ERR_NONE; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ @@ -56,13 +63,140 @@ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_ADC_Init(void); static void MX_I2C1_Init(void); +static void MX_TIM3_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +int switch_pressed() { + static uint32_t last_press = 0; + if (HAL_GPIO_ReadPin(ENC_S_GPIO_Port, ENC_S_Pin) == GPIO_PIN_RESET) { + if (HAL_GetTick() - last_press > DEBOUNCE_TIME) { + last_press = HAL_GetTick(); + return 1; + } + } + return 0; +} +void update_thresh() { + int16_t delta = htim3.Instance->CNT - 0x8000; + delta /= 4; + if (delta != 0) { + // Clockwise should increase, so invert the sign here + v_thresh -= delta * 10; + if (v_thresh < V_MIN) { + v_thresh = V_MIN; + } else if (v_thresh > V_MAX) { + v_thresh = V_MAX; + } + htim3.Instance->CNT -= delta * 4; + } +} + +VPState update_setup_charge() { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_RESET); + + update_thresh(); + + if (HAL_GPIO_ReadPin(C_D_SEL_GPIO_Port, C_D_SEL_Pin) == GPIO_PIN_RESET) { + return STATE_SETUP_DISCHARGE; + } + + if (switch_pressed()) { + if (v_bat > v_charge_discharge) { + error = ERR_BAT_GT_CHARGE; + return STATE_ERR_CHARGE; + } else if (v_bat < V_MIN) { + error = ERR_VBAT_TOO_LOW; + return STATE_ERR_CHARGE; + } else if (v_charge_discharge < V_MIN) { + error = ERR_VCDC_TOO_LOW; + return STATE_ERR_CHARGE; + } + return STATE_CHARGE; + } + return STATE_SETUP_CHARGE; +} + +VPState update_setup_discharge() { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_RESET); + + update_thresh(); + + if (HAL_GPIO_ReadPin(C_D_SEL_GPIO_Port, C_D_SEL_Pin) == GPIO_PIN_SET) { + return STATE_SETUP_CHARGE; + } + + if (switch_pressed()) { + if (v_bat < v_charge_discharge) { + error = ERR_BAT_LT_DISCHARGE; + return STATE_ERR_DISCHARGE; + } else if (v_bat < V_MIN) { + error = ERR_VBAT_TOO_LOW; + return STATE_ERR_DISCHARGE; + } else if (v_charge_discharge < V_MIN) { + error = ERR_VCDC_TOO_LOW; + return STATE_ERR_DISCHARGE; + } + return STATE_DISCHARGE; + } + return STATE_SETUP_DISCHARGE; +} + +VPState update_charge() { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_SET); + + if (v_bat < V_MIN) { + error = ERR_VBAT_TOO_LOW; + return STATE_ERR_CHARGE; + } else if (v_bat > v_thresh) { + error = ERR_OVERVOLTAGE; + return STATE_ERR_CHARGE; + } + return STATE_CHARGE; +} + +VPState update_discharge() { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_SET); + + if (v_bat < V_MIN) { + error = ERR_VBAT_TOO_LOW; + return STATE_ERR_DISCHARGE; + } else if (v_bat < v_thresh) { + error = ERR_UNDERVOLTAGE; + return STATE_ERR_DISCHARGE; + } + return STATE_DISCHARGE; +} + +VPState update_err_charge() { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_RESET); + + if (switch_pressed()) { + error = ERR_NONE; + return STATE_SETUP_CHARGE; + } + return STATE_ERR_CHARGE; +} + +VPState update_err_discharge() { + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_RESET); + + if (switch_pressed()) { + error = ERR_NONE; + return STATE_SETUP_DISCHARGE; + } + return STATE_ERR_DISCHARGE; +} /* USER CODE END 0 */ /** @@ -95,7 +229,10 @@ int main(void) { MX_GPIO_Init(); MX_ADC_Init(); MX_I2C1_Init(); + MX_TIM3_Init(); /* USER CODE BEGIN 2 */ + htim3.Instance->CNT = 0x8000; + HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL); display_init(); /* USER CODE END 2 */ @@ -103,17 +240,30 @@ int main(void) { /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ + /* USER CODE BEGIN 3 */ - voltage += 1; - if (HAL_GetTick() > 3000) { - state = STATE_DISCHARGE; - } else if (HAL_GetTick() > 2000) { - state = STATE_ERR_CHARGE; - } else if (HAL_GetTick() > 1000) { - state = STATE_CHARGE; + switch (state) { + case STATE_SETUP_CHARGE: + state = update_setup_charge(); + break; + case STATE_SETUP_DISCHARGE: + state = update_setup_discharge(); + break; + case STATE_CHARGE: + state = update_charge(); + break; + case STATE_DISCHARGE: + state = update_discharge(); + break; + case STATE_ERR_CHARGE: + state = update_err_charge(); + break; + case STATE_ERR_DISCHARGE: + state = update_err_discharge(); + break; } display_update(); - HAL_Delay(100); + HAL_Delay(10); } /* USER CODE END 3 */ } @@ -262,6 +412,51 @@ static void MX_I2C1_Init(void) { /* USER CODE END I2C1_Init 2 */ } +/** + * @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_Encoder_InitTypeDef sConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {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 = 65535; + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + sConfig.EncoderMode = TIM_ENCODERMODE_TI12; + sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; + sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; + sConfig.IC1Prescaler = TIM_ICPSC_DIV2; + sConfig.IC1Filter = 10; + sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; + sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; + sConfig.IC2Prescaler = TIM_ICPSC_DIV2; + sConfig.IC2Filter = 10; + if (HAL_TIM_Encoder_Init(&htim3, &sConfig) != HAL_OK) { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) { + Error_Handler(); + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ +} + /** * @brief GPIO Initialization Function * @param None @@ -269,6 +464,8 @@ static void MX_I2C1_Init(void) { */ 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_GPIOF_CLK_ENABLE(); @@ -279,7 +476,7 @@ static void MX_GPIO_Init(void) { HAL_GPIO_WritePin(RELAY_SET_GPIO_Port, RELAY_SET_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(UV_LED_GPIO_Port, UV_LED_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET); /*Configure GPIO pin : RELAY_SET_Pin */ GPIO_InitStruct.Pin = RELAY_SET_Pin; @@ -288,18 +485,21 @@ static void MX_GPIO_Init(void) { GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(RELAY_SET_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pins : C_D_SEL_Pin ENC_S_Pin ENC_A_Pin ENC_B_Pin */ - GPIO_InitStruct.Pin = C_D_SEL_Pin | ENC_S_Pin | ENC_A_Pin | ENC_B_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + /*Configure GPIO pins : C_D_SEL_Pin ENC_S_Pin */ + GPIO_InitStruct.Pin = C_D_SEL_Pin | ENC_S_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - /*Configure GPIO pin : UV_LED_Pin */ - GPIO_InitStruct.Pin = UV_LED_Pin; + /*Configure GPIO pin : ERR_LED_Pin */ + GPIO_InitStruct.Pin = ERR_LED_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(UV_LED_GPIO_Port, &GPIO_InitStruct); + HAL_GPIO_Init(ERR_LED_GPIO_Port, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + /* USER CODE END MX_GPIO_Init_2 */ } /* USER CODE BEGIN 4 */ diff --git a/Core/Src/stm32f0xx_hal_msp.c b/Core/Src/stm32f0xx_hal_msp.c index 325f42f..372aa8a 100644 --- a/Core/Src/stm32f0xx_hal_msp.c +++ b/Core/Src/stm32f0xx_hal_msp.c @@ -206,6 +206,71 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) } +/** +* @brief TIM_Encoder MSP Initialization +* This function configures the hardware resources used in this example +* @param htim_encoder: TIM_Encoder handle pointer +* @retval None +*/ +void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* htim_encoder) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(htim_encoder->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspInit 0 */ + + /* USER CODE END TIM3_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM3_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM3 GPIO Configuration + PB4 ------> TIM3_CH1 + PB5 ------> TIM3_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM3; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM3_MspInit 1 */ + + /* USER CODE END TIM3_MspInit 1 */ + } + +} + +/** +* @brief TIM_Encoder MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_encoder: TIM_Encoder handle pointer +* @retval None +*/ +void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* htim_encoder) +{ + if(htim_encoder->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspDeInit 0 */ + + /* USER CODE END TIM3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM3_CLK_DISABLE(); + + /**TIM3 GPIO Configuration + PB4 ------> TIM3_CH1 + PB5 ------> TIM3_CH2 + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_4|GPIO_PIN_5); + + /* USER CODE BEGIN TIM3_MspDeInit 1 */ + + /* USER CODE END TIM3_MspDeInit 1 */ + } + +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/Makefile b/Makefile index 09746f6..ebbf5de 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [3.18.0-B7] date: [Fri Mar 10 18:58:36 CET 2023] +# File automatically-generated by tool: [projectgenerator] version: [3.19.2] date: [Tue Apr 11 18:36:37 CEST 2023] ########################################################################################################################## # ------------------------------------------------ @@ -35,31 +35,31 @@ BUILD_DIR = build # source ###################################### # C sources -C_SOURCES = \ -Core/Src/main.c \ -Core/Src/stm32f0xx_it.c \ -Core/Src/stm32f0xx_hal_msp.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c \ -Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c \ -Core/Src/system_stm32f0xx.c +C_SOURCES = \ +Core/Src/main.c \ +Core/Src/stm32f0xx_it.c \ +Core/Src/stm32f0xx_hal_msp.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_exti.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c \ +Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c \ +Core/Src/system_stm32f0xx.c # ASM sources -ASM_SOURCES = \ +ASM_SOURCES = \ startup_stm32f042x6.s @@ -103,8 +103,8 @@ MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) AS_DEFS = # C defines -C_DEFS = \ --DUSE_HAL_DRIVER \ +C_DEFS = \ +-DUSE_HAL_DRIVER \ -DSTM32F042x6 @@ -112,11 +112,11 @@ C_DEFS = \ AS_INCLUDES = # C includes -C_INCLUDES = \ --ICore/Inc \ --IDrivers/STM32F0xx_HAL_Driver/Inc \ --IDrivers/STM32F0xx_HAL_Driver/Inc/Legacy \ --IDrivers/CMSIS/Device/ST/STM32F0xx/Include \ +C_INCLUDES = \ +-ICore/Inc \ +-IDrivers/STM32F0xx_HAL_Driver/Inc \ +-IDrivers/STM32F0xx_HAL_Driver/Inc/Legacy \ +-IDrivers/CMSIS/Device/ST/STM32F0xx/Include \ -IDrivers/CMSIS/Include @@ -189,4 +189,4 @@ clean: ####################################### -include $(wildcard $(BUILD_DIR)/*.d) -# *** EOF *** \ No newline at end of file +# *** EOF *** diff --git a/STM32Make.make b/STM32Make.make index ebfe01b..0b7e945 100644 --- a/STM32Make.make +++ b/STM32Make.make @@ -191,8 +191,14 @@ vpath %.cpp $(sort $(dir $(CPP_SOURCES))) # list of C objects OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o))) vpath %.c $(sort $(dir $(C_SOURCES))) + # list of ASM program objects -OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o))) +# list of ASM program objects +UPPER_CASE_ASM_SOURCES = $(filter %.S,$(ASM_SOURCES)) +LOWER_CASE_ASM_SOURCES = $(filter %.s,$(ASM_SOURCES)) + +OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(UPPER_CASE_ASM_SOURCES:.S=.o))) +OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(LOWER_CASE_ASM_SOURCES:.s=.o))) vpath %.s $(sort $(dir $(ASM_SOURCES))) $(BUILD_DIR)/%.o: %.cpp STM32Make.make | $(BUILD_DIR) @@ -207,6 +213,9 @@ $(BUILD_DIR)/%.o: %.c STM32Make.make | $(BUILD_DIR) $(BUILD_DIR)/%.o: %.s STM32Make.make | $(BUILD_DIR) $(AS) -c $(CFLAGS) $< -o $@ +$(BUILD_DIR)/%.o: %.S STM32Make.make | $(BUILD_DIR) + $(AS) -c $(CFLAGS) $< -o $@ + $(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) STM32Make.make $(CC) $(OBJECTS) $(LDFLAGS) -o $@ $(SZ) $@ diff --git a/VoltageProtector.ioc b/VoltageProtector.ioc index 835115d..12fba8f 100644 --- a/VoltageProtector.ioc +++ b/VoltageProtector.ioc @@ -12,7 +12,8 @@ Mcu.IP1=I2C1 Mcu.IP2=NVIC Mcu.IP3=RCC Mcu.IP4=SYS -Mcu.IPNb=5 +Mcu.IP5=TIM3 +Mcu.IPNb=6 Mcu.Name=STM32F042K(4-6)Tx Mcu.Package=LQFP32 Mcu.Pin0=PF0-OSC_IN @@ -33,8 +34,8 @@ Mcu.PinsNb=14 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F042K6Tx -MxCube.Version=6.7.0 -MxDb.Version=DB.6.0.70 +MxCube.Version=6.8.0 +MxDb.Version=DB.6.0.80 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 @@ -56,21 +57,17 @@ PA2.Signal=GPIO_Output PB0.GPIOParameters=GPIO_Label PB0.GPIO_Label=C_D_SEL PB0.Locked=true -PB0.Signal=GPIO_Input +PB0.Signal=GPXTI0 PB3.GPIOParameters=GPIO_Label PB3.GPIO_Label=ENC_S PB3.Locked=true -PB3.Signal=GPIO_Input -PB4.GPIOParameters=GPIO_Label -PB4.GPIO_Label=ENC_A +PB3.Signal=GPXTI3 PB4.Locked=true -PB4.Signal=GPIO_Input -PB5.GPIOParameters=GPIO_Label -PB5.GPIO_Label=ENC_B +PB4.Signal=S_TIM3_CH1 PB5.Locked=true -PB5.Signal=GPIO_Input +PB5.Signal=S_TIM3_CH2 PB7.GPIOParameters=GPIO_Label -PB7.GPIO_Label=UV_LED +PB7.GPIO_Label=ERR_LED PB7.Locked=true PB7.Signal=GPIO_Output PB8.Locked=true @@ -101,12 +98,13 @@ ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false ProjectManager.ProjectFileName=VoltageProtector.ioc ProjectManager.ProjectName=VoltageProtector +ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=Makefile ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_ADC_Init-ADC-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_ADC_Init-ADC-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true RCC.AHBFreq_Value=48000000 RCC.APB1Freq_Value=48000000 RCC.APB1TimFreq_Value=48000000 @@ -125,6 +123,24 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSI48 RCC.TimSysFreq_Value=48000000 RCC.USART1Freq_Value=48000000 RCC.VCOOutput2Freq_Value=8000000 +SH.GPXTI0.0=GPIO_EXTI0 +SH.GPXTI0.ConfNb=1 +SH.GPXTI3.0=GPIO_EXTI3 +SH.GPXTI3.ConfNb=1 +SH.S_TIM3_CH1.0=TIM3_CH1,Encoder_Interface +SH.S_TIM3_CH1.ConfNb=1 +SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface +SH.S_TIM3_CH2.ConfNb=1 +TIM3.ClockDivision=TIM_CLOCKDIVISION_DIV1 +TIM3.EncoderMode=TIM_ENCODERMODE_TI12 +TIM3.IC1Filter=10 +TIM3.IC1Polarity=TIM_ICPOLARITY_RISING +TIM3.IC1Prescaler=TIM_ICPSC_DIV2 +TIM3.IC2Filter=10 +TIM3.IC2Polarity=TIM_ICPOLARITY_RISING +TIM3.IC2Prescaler=TIM_ICPSC_DIV2 +TIM3.IPParameters=EncoderMode,IC1Polarity,IC2Polarity,IC1Filter,IC2Filter,ClockDivision,Prescaler,IC1Prescaler,IC2Prescaler +TIM3.Prescaler=0 VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick board=custom