From b82faa62fe3cc44dc5656fa7e00d60115bbde767 Mon Sep 17 00:00:00 2001 From: alexey Date: Wed, 21 Aug 2024 13:06:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B8=D0=BC=D1=83=D0=BB=D1=8F=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=D0=B8=D0=BD=D1=83=D1=81=D0=BE=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=88=D0=B8=D0=BC=20?= =?UTF-8?q?=D0=B8=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=20=D0=BC=D0=BE=D0=B4=D0=B1=D0=B0=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit note: - модбас не моделируется, в s-function просто передаются константы режимов. - лишние файлы убраны в outdate. - два канала одной фазы переключаются немного криво: на один такт симуляции проскакивает высокий уровень предыдущего канала и только потом включается текущий канал --- .gitignore | 35 +-- .outdate/MCU_Wrapper/MCU.c | 8 +- .outdate/MCU_Wrapper/controller.h | 9 +- .../mcu_test.slx.r2021b | Bin .../mcu_test_r2021a.slx.r2021a | Bin mcu_test.slx => .outdate/mcu_test_r2023a.slx | Bin .../Core}/Inc/ClockPackTransf.h | 0 .../stm32f1xx test/Core}/Inc/main.h | 0 .../Core}/Inc/stm32f1xx_hal_conf.h | 0 .../stm32f1xx test/Core}/Inc/stm32f1xx_it.h | 0 .../Core}/Src/ClockPackTransf.c | 0 .../stm32f1xx test/Core}/Src/main.c | 0 .../Core}/Src/stm32f1xx_hal_msp.c | 0 .../stm32f1xx test/Core}/Src/stm32f1xx_it.c | 0 .../Core}/Src/system_stm32f1xx.c | 0 .../Device/STM32F1xx/stm32f100xb_matlab.h | 0 .../Device/STM32F1xx/stm32f100xe_matlab.h | 0 .../Device/STM32F1xx/stm32f101x6_matlab.h | 0 .../Device/STM32F1xx/stm32f101xb_matlab.h | 0 .../Device/STM32F1xx/stm32f101xe_matlab.h | 0 .../Device/STM32F1xx/stm32f101xg_matlab.h | 0 .../Device/STM32F1xx/stm32f102x6_matlab.h | 0 .../Device/STM32F1xx/stm32f102xb_matlab.h | 0 .../Device/STM32F1xx/stm32f103x6_matlab.h | 0 .../Device/STM32F1xx/stm32f103xb_matlab.h | 0 .../Device/STM32F1xx/stm32f103xe_matlab.h | 0 .../Device/STM32F1xx/stm32f103xg_matlab.h | 0 .../Device/STM32F1xx/stm32f105xc_matlab.h | 0 .../Device/STM32F1xx/stm32f107xc_matlab.h | 0 .../CMSIS/Device/STM32F1xx/stm32f1xx.h | 0 .../CMSIS/Device/STM32F1xx/system_stm32f1xx.h | 0 .../Drivers/CMSIS/arm_defines.h | 0 .../Drivers/CMSIS/core_cm1_matlab.h | 0 .../Drivers/CMSIS/core_cm3_matlab.h | 0 .../Drivers/CMSIS/core_cm4_matlab.h | 0 .../Drivers/CMSIS/stdint.h | 0 .../Inc/Legacy/stm32_hal_legacy.h | 0 .../Inc/Legacy/stm32f1xx_hal_can_ex_legacy.h | 0 .../Inc/Legacy/stm32f1xx_hal_can_legacy.h | 0 .../Inc/stm32_assert_template.h | 0 .../STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h | 0 .../Inc/stm32f1xx_hal_adc.h | 0 .../Inc/stm32f1xx_hal_adc_ex.h | 0 .../Inc/stm32f1xx_hal_can.h | 0 .../Inc/stm32f1xx_hal_cec.h | 0 .../Inc/stm32f1xx_hal_conf_template.h | 0 .../Inc/stm32f1xx_hal_cortex.h | 0 .../Inc/stm32f1xx_hal_crc.h | 0 .../Inc/stm32f1xx_hal_dac.h | 0 .../Inc/stm32f1xx_hal_dac_ex.h | 0 .../Inc/stm32f1xx_hal_def.h | 0 .../Inc/stm32f1xx_hal_dma.h | 0 .../Inc/stm32f1xx_hal_dma_ex.h | 0 .../Inc/stm32f1xx_hal_eth.h | 0 .../Inc/stm32f1xx_hal_exti.h | 0 .../Inc/stm32f1xx_hal_flash.h | 0 .../Inc/stm32f1xx_hal_flash_ex.h | 0 .../Inc/stm32f1xx_hal_gpio.h | 0 .../Inc/stm32f1xx_hal_gpio_ex.h | 0 .../Inc/stm32f1xx_hal_hcd.h | 0 .../Inc/stm32f1xx_hal_i2c.h | 0 .../Inc/stm32f1xx_hal_i2s.h | 0 .../Inc/stm32f1xx_hal_irda.h | 0 .../Inc/stm32f1xx_hal_iwdg.h | 0 .../Inc/stm32f1xx_hal_mmc.h | 0 .../Inc/stm32f1xx_hal_nand.h | 0 .../Inc/stm32f1xx_hal_nor.h | 0 .../Inc/stm32f1xx_hal_pccard.h | 0 .../Inc/stm32f1xx_hal_pcd.h | 0 .../Inc/stm32f1xx_hal_pcd_ex.h | 0 .../Inc/stm32f1xx_hal_pwr.h | 0 .../Inc/stm32f1xx_hal_rcc.h | 0 .../Inc/stm32f1xx_hal_rcc_ex.h | 0 .../Inc/stm32f1xx_hal_rtc.h | 0 .../Inc/stm32f1xx_hal_rtc_ex.h | 0 .../Inc/stm32f1xx_hal_sd.h | 0 .../Inc/stm32f1xx_hal_smartcard.h | 0 .../Inc/stm32f1xx_hal_spi.h | 0 .../Inc/stm32f1xx_hal_sram.h | 0 .../Inc/stm32f1xx_hal_tim.h | 0 .../Inc/stm32f1xx_hal_tim_ex.h | 0 .../Inc/stm32f1xx_hal_uart.h | 0 .../Inc/stm32f1xx_hal_usart.h | 0 .../Inc/stm32f1xx_hal_wwdg.h | 0 .../Inc/stm32f1xx_ll_adc.h | 0 .../Inc/stm32f1xx_ll_bus.h | 0 .../Inc/stm32f1xx_ll_cortex.h | 0 .../Inc/stm32f1xx_ll_crc.h | 0 .../Inc/stm32f1xx_ll_dac.h | 0 .../Inc/stm32f1xx_ll_dma.h | 0 .../Inc/stm32f1xx_ll_exti.h | 0 .../Inc/stm32f1xx_ll_fsmc.h | 0 .../Inc/stm32f1xx_ll_gpio.h | 0 .../Inc/stm32f1xx_ll_i2c.h | 0 .../Inc/stm32f1xx_ll_iwdg.h | 0 .../Inc/stm32f1xx_ll_pwr.h | 0 .../Inc/stm32f1xx_ll_rcc.h | 0 .../Inc/stm32f1xx_ll_rtc.h | 0 .../Inc/stm32f1xx_ll_sdmmc.h | 0 .../Inc/stm32f1xx_ll_spi.h | 0 .../Inc/stm32f1xx_ll_system.h | 0 .../Inc/stm32f1xx_ll_tim.h | 0 .../Inc/stm32f1xx_ll_usart.h | 0 .../Inc/stm32f1xx_ll_usb.h | 0 .../Inc/stm32f1xx_ll_utils.h | 0 .../Inc/stm32f1xx_ll_wwdg.h | 0 .../STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c | 0 .../Src/stm32f1xx_hal_adc.c | 0 .../Src/stm32f1xx_hal_adc_ex.c | 0 .../Src/stm32f1xx_hal_can.c | 0 .../Src/stm32f1xx_hal_cec.c | 0 .../Src/stm32f1xx_hal_cortex.c | 0 .../Src/stm32f1xx_hal_crc.c | 0 .../Src/stm32f1xx_hal_dac.c | 0 .../Src/stm32f1xx_hal_dac_ex.c | 0 .../Src/stm32f1xx_hal_dma.c | 0 .../Src/stm32f1xx_hal_eth.c | 0 .../Src/stm32f1xx_hal_exti.c | 0 .../Src/stm32f1xx_hal_flash.c | 0 .../Src/stm32f1xx_hal_flash_ex.c | 0 .../Src/stm32f1xx_hal_gpio.c | 0 .../Src/stm32f1xx_hal_gpio_ex.c | 0 .../Src/stm32f1xx_hal_hcd.c | 0 .../Src/stm32f1xx_hal_i2c.c | 0 .../Src/stm32f1xx_hal_i2s.c | 0 .../Src/stm32f1xx_hal_irda.c | 0 .../Src/stm32f1xx_hal_iwdg.c | 0 .../Src/stm32f1xx_hal_mmc.c | 0 .../Src/stm32f1xx_hal_msp_template.c | 0 .../Src/stm32f1xx_hal_nand.c | 0 .../Src/stm32f1xx_hal_nor.c | 0 .../Src/stm32f1xx_hal_pccard.c | 0 .../Src/stm32f1xx_hal_pcd.c | 0 .../Src/stm32f1xx_hal_pcd_ex.c | 0 .../Src/stm32f1xx_hal_pwr.c | 0 .../Src/stm32f1xx_hal_rcc.c | 0 .../Src/stm32f1xx_hal_rcc_ex.c | 0 .../Src/stm32f1xx_hal_rtc.c | 0 .../Src/stm32f1xx_hal_rtc_ex.c | 0 .../Src/stm32f1xx_hal_sd.c | 0 .../Src/stm32f1xx_hal_smartcard.c | 0 .../Src/stm32f1xx_hal_spi.c | 0 .../Src/stm32f1xx_hal_sram.c | 0 .../Src/stm32f1xx_hal_tim.c | 0 .../Src/stm32f1xx_hal_tim_ex.c | 0 ...tm32f1xx_hal_timebase_rtc_alarm_template.c | 0 .../Src/stm32f1xx_hal_timebase_tim_template.c | 0 .../Src/stm32f1xx_hal_uart.c | 0 .../Src/stm32f1xx_hal_usart.c | 0 .../Src/stm32f1xx_hal_wwdg.c | 0 .../Src/stm32f1xx_ll_adc.c | 0 .../Src/stm32f1xx_ll_crc.c | 0 .../Src/stm32f1xx_ll_dac.c | 0 .../Src/stm32f1xx_ll_dma.c | 0 .../Src/stm32f1xx_ll_exti.c | 0 .../Src/stm32f1xx_ll_fsmc.c | 0 .../Src/stm32f1xx_ll_gpio.c | 0 .../Src/stm32f1xx_ll_i2c.c | 0 .../Src/stm32f1xx_ll_pwr.c | 0 .../Src/stm32f1xx_ll_rcc.c | 0 .../Src/stm32f1xx_ll_rtc.c | 0 .../Src/stm32f1xx_ll_sdmmc.c | 0 .../Src/stm32f1xx_ll_spi.c | 0 .../Src/stm32f1xx_ll_tim.c | 0 .../Src/stm32f1xx_ll_usart.c | 0 .../Src/stm32f1xx_ll_usb.c | 0 .../Src/stm32f1xx_ll_utils.c | 0 .../stm32f1xx_matlab_gpio.c | 0 .../stm32f1xx_matlab_gpio.h | 0 .../STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.c | 0 .../STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.h | 0 .../STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.c | 0 .../STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.h | 0 .../stm32f1xx_periph_registers.c | 0 .../MCU_STM32F1xx_Matlab}/stm32_defs.h | 0 .../stm32f1xx_matlab_conf.c | 0 .../stm32f1xx_matlab_conf.h | 0 .../Core.stm32f4xx2}/Inc/gpio.h | 0 .../Core.stm32f4xx2}/Inc/main.h | 0 .../Core.stm32f4xx2}/Inc/proj_setup.h | 0 .../Core.stm32f4xx2}/Inc/stm32f4xx_hal_conf.h | 0 .../Core.stm32f4xx2}/Inc/stm32f4xx_it.h | 0 .../stm32f4xx test/Core.stm32f4xx2}/Inc/tim.h | 0 .../Core.stm32f4xx2}/Src/gpio.c | 0 .../Core.stm32f4xx2}/Src/main.c | 0 .../Core.stm32f4xx2}/Src/stm32f4xx_hal_msp.c | 0 .../Core.stm32f4xx2}/Src/stm32f4xx_it.c | 0 .../Core.stm32f4xx2}/Src/system_stm32f4xx.c | 0 .../stm32f4xx test/Core.stm32f4xx2}/Src/tim.c | 0 Code/Core/Src/main.c | 1 + Code/Modbus/modbus.c | 58 ++-- Code/Modbus/modbus.h | 77 +++-- Code/PWM/control.c | 10 +- Code/PWM/control.h | 2 +- Code/PWM/control_def.h | 38 --- Code/PWM/pwm.c | 148 +++++++--- Code/PWM/pwm.h | 7 +- Code/PWM/settings.c | 265 ++++++++++++++++++ Code/PWM/settings.h | 123 +++++++- mcu_test.slxc | Bin 5640 -> 0 bytes mcu_test_r2021a.slx | Bin 47737 -> 48368 bytes 201 files changed, 579 insertions(+), 202 deletions(-) rename mcu_test.slx.r2021b => .outdate/mcu_test.slx.r2021b (100%) rename mcu_test_r2021a.slx.r2021a => .outdate/mcu_test_r2021a.slx.r2021a (100%) rename mcu_test.slx => .outdate/mcu_test_r2023a.slx (100%) rename {Core => .outdate/stm32f1xx test/Core}/Inc/ClockPackTransf.h (100%) rename {Core => .outdate/stm32f1xx test/Core}/Inc/main.h (100%) rename {Core => .outdate/stm32f1xx test/Core}/Inc/stm32f1xx_hal_conf.h (100%) rename {Core => .outdate/stm32f1xx test/Core}/Inc/stm32f1xx_it.h (100%) rename {Core => .outdate/stm32f1xx test/Core}/Src/ClockPackTransf.c (100%) rename {Core => .outdate/stm32f1xx test/Core}/Src/main.c (100%) rename {Core => .outdate/stm32f1xx test/Core}/Src/stm32f1xx_hal_msp.c (100%) rename {Core => .outdate/stm32f1xx test/Core}/Src/stm32f1xx_it.c (100%) rename {Core => .outdate/stm32f1xx test/Core}/Src/system_stm32f1xx.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f100xb_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f100xe_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f101x6_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f101xb_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f101xe_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f101xg_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f102x6_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f102xb_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f103x6_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f103xb_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f103xe_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f103xg_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f105xc_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f107xc_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/stm32f1xx.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/Device/STM32F1xx/system_stm32f1xx.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/arm_defines.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/core_cm1_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/core_cm3_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/core_cm4_matlab.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/CMSIS/stdint.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_ex_legacy.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_legacy.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32_assert_template.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_can.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cec.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_conf_template.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_crc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_eth.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_hcd.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2s.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_irda.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_iwdg.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_mmc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nand.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nor.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pccard.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sd.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_smartcard.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sram.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_usart.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_wwdg.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_fsmc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_iwdg.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rtc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_sdmmc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_wwdg.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cec.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_crc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_eth.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_hcd.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2s.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_irda.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_iwdg.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_mmc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_msp_template.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nand.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nor.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pccard.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sd.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_smartcard.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sram.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_rtc_alarm_template.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_tim_template.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_wwdg.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_fsmc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rtc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_sdmmc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/Drivers/STM32F1xx_SIMULINK/stm32f1xx_periph_registers.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/stm32_defs.h (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/stm32f1xx_matlab_conf.c (100%) rename {MCU_STM32F1xx_Matlab => .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab}/stm32f1xx_matlab_conf.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Inc/gpio.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Inc/main.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Inc/proj_setup.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Inc/stm32f4xx_hal_conf.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Inc/stm32f4xx_it.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Inc/tim.h (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Src/gpio.c (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Src/main.c (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Src/stm32f4xx_hal_msp.c (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Src/stm32f4xx_it.c (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Src/system_stm32f4xx.c (100%) rename {Core.stm32f4xx => .outdate/stm32f4xx test/Core.stm32f4xx2}/Src/tim.c (100%) delete mode 100644 Code/PWM/control_def.h create mode 100644 Code/PWM/settings.c delete mode 100644 mcu_test.slxc diff --git a/.gitignore b/.gitignore index b310fa1..97339aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,30 +1,7 @@ /.vs -/.vs/slnx.sqlite -/.vs/tasks.vs.json -/.vs/test/v16/.suo -/.vs/test/v16/Browse.VC.db -/.vs/test/v16/Browse.VC.db-shm -/.vs/test/v16/Browse.VC.db-wal -/.vs/test/v16/Browse.VC.opendb -/.vs/test/v16/ipch/AutoPCH/291705294dd594cc/MAIN.ipch -/.vs/test/v16/ipch/AutoPCH/3854b8d8fc67ea4/STM32F4XX_HAL.ipch -/.vs/test/v16/ipch/AutoPCH/3cb8fc0ec124017c/STM32F407XX_MATLAB.ipch -/.vs/test/v16/ipch/AutoPCH/5fbc2639f7ec2c10/STM32F407XX_MATLAB.ipch -/.vs/test/v16/ipch/AutoPCH/c31768203856fa04/STM32F407XX_MATLAB.ipch -/.vs/test/v16/ipch/AutoPCH/f64e8f1797b0f4bf/SETJMP.ipch -/.vs/test/v16/.suo -/.vs/test/v16/Browse.VC.db -/.vs/slnx.sqlite -/.vs/test/v16/.suo -/.vs/VSWorkspaceState.json -/Code/.vs/Code/v16/.suo -/Code/.vs/Code/v16/Browse.VC.db -/Code/.vs/ProjectSettings.json -/Code/.vs/slnx.sqlite -/Code/.vs/VSWorkspaceState.json -/mcu_test_r2021a.slxc -/MCU.mexw64 -/MCU.mexw64.pdb -/slprj/sim/varcache/mcu_test_r2021a/checksumOfCache.mat -/slprj/sim/varcache/mcu_test_r2021a/tmwinternal/simulink_cache.xml -/slprj/sim/varcache/mcu_test_r2021a/varInfo.mat +/slprj +/Code/.vs/ + +*.slxc +*.mexw64 +*.mexw64.pdb diff --git a/.outdate/MCU_Wrapper/MCU.c b/.outdate/MCU_Wrapper/MCU.c index 0f8a373..711ac4d 100644 --- a/.outdate/MCU_Wrapper/MCU.c +++ b/.outdate/MCU_Wrapper/MCU.c @@ -158,10 +158,10 @@ static void mdlTerminate(SimStruct *S) { //TerminateThread(hThread, NULL); //CloseHandle(hThread); - flag_to_end = 1; // выставляем флаг закончить код МК - ResumeThread(hThread); // запускаем код мк - WaitForSingleObject(hThread, 1000); // и ждем пока он закончиться - SIM_deInitialize_Simulation(); // деинициализируем симуляцию + flag_to_end = 1; + ResumeThread(hThread); + WaitForSingleObject(hThread, 1000); + SIM_deInitialize_Simulation(); mexUnlock(); } #ifdef MATLAB_MEX_FILE /* Is this file being compiled as a diff --git a/.outdate/MCU_Wrapper/controller.h b/.outdate/MCU_Wrapper/controller.h index 8536298..c735835 100644 --- a/.outdate/MCU_Wrapper/controller.h +++ b/.outdate/MCU_Wrapper/controller.h @@ -117,10 +117,11 @@ extern double SIM_Sample_Time; // sample time /** * @brief While statement for emulate MCU code in Simulink. * @param _expression_ - expression for while. - * @note while, , (flag_to_end) - * . .. . - ( 1) while - * + * @note while, , (_expression_ != 0) + * ( - ). + * . , + * . + * while, . * * @code @ref sim_while_CODE_ to see for replace while sim_while (for debug). */ diff --git a/mcu_test.slx.r2021b b/.outdate/mcu_test.slx.r2021b similarity index 100% rename from mcu_test.slx.r2021b rename to .outdate/mcu_test.slx.r2021b diff --git a/mcu_test_r2021a.slx.r2021a b/.outdate/mcu_test_r2021a.slx.r2021a similarity index 100% rename from mcu_test_r2021a.slx.r2021a rename to .outdate/mcu_test_r2021a.slx.r2021a diff --git a/mcu_test.slx b/.outdate/mcu_test_r2023a.slx similarity index 100% rename from mcu_test.slx rename to .outdate/mcu_test_r2023a.slx diff --git a/Core/Inc/ClockPackTransf.h b/.outdate/stm32f1xx test/Core/Inc/ClockPackTransf.h similarity index 100% rename from Core/Inc/ClockPackTransf.h rename to .outdate/stm32f1xx test/Core/Inc/ClockPackTransf.h diff --git a/Core/Inc/main.h b/.outdate/stm32f1xx test/Core/Inc/main.h similarity index 100% rename from Core/Inc/main.h rename to .outdate/stm32f1xx test/Core/Inc/main.h diff --git a/Core/Inc/stm32f1xx_hal_conf.h b/.outdate/stm32f1xx test/Core/Inc/stm32f1xx_hal_conf.h similarity index 100% rename from Core/Inc/stm32f1xx_hal_conf.h rename to .outdate/stm32f1xx test/Core/Inc/stm32f1xx_hal_conf.h diff --git a/Core/Inc/stm32f1xx_it.h b/.outdate/stm32f1xx test/Core/Inc/stm32f1xx_it.h similarity index 100% rename from Core/Inc/stm32f1xx_it.h rename to .outdate/stm32f1xx test/Core/Inc/stm32f1xx_it.h diff --git a/Core/Src/ClockPackTransf.c b/.outdate/stm32f1xx test/Core/Src/ClockPackTransf.c similarity index 100% rename from Core/Src/ClockPackTransf.c rename to .outdate/stm32f1xx test/Core/Src/ClockPackTransf.c diff --git a/Core/Src/main.c b/.outdate/stm32f1xx test/Core/Src/main.c similarity index 100% rename from Core/Src/main.c rename to .outdate/stm32f1xx test/Core/Src/main.c diff --git a/Core/Src/stm32f1xx_hal_msp.c b/.outdate/stm32f1xx test/Core/Src/stm32f1xx_hal_msp.c similarity index 100% rename from Core/Src/stm32f1xx_hal_msp.c rename to .outdate/stm32f1xx test/Core/Src/stm32f1xx_hal_msp.c diff --git a/Core/Src/stm32f1xx_it.c b/.outdate/stm32f1xx test/Core/Src/stm32f1xx_it.c similarity index 100% rename from Core/Src/stm32f1xx_it.c rename to .outdate/stm32f1xx test/Core/Src/stm32f1xx_it.c diff --git a/Core/Src/system_stm32f1xx.c b/.outdate/stm32f1xx test/Core/Src/system_stm32f1xx.c similarity index 100% rename from Core/Src/system_stm32f1xx.c rename to .outdate/stm32f1xx test/Core/Src/system_stm32f1xx.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xb_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xb_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xb_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xb_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xe_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xe_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xe_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f100xe_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101x6_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101x6_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101x6_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101x6_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xb_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xb_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xb_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xb_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xe_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xe_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xe_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xe_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xg_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xg_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xg_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f101xg_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102x6_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102x6_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102x6_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102x6_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102xb_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102xb_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102xb_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f102xb_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103x6_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103x6_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103x6_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103x6_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xb_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xb_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xb_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xb_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xe_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xe_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xe_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xe_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xg_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xg_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xg_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f103xg_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f105xc_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f105xc_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f105xc_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f105xc_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f107xc_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f107xc_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f107xc_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f107xc_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f1xx.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f1xx.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f1xx.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/stm32f1xx.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/system_stm32f1xx.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/system_stm32f1xx.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/system_stm32f1xx.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/Device/STM32F1xx/system_stm32f1xx.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/arm_defines.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/arm_defines.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/arm_defines.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/arm_defines.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm1_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm1_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm1_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm1_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm3_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm3_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm3_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm3_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm4_matlab.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm4_matlab.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm4_matlab.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/core_cm4_matlab.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/CMSIS/stdint.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/stdint.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/CMSIS/stdint.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/CMSIS/stdint.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_ex_legacy.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_ex_legacy.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_ex_legacy.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_ex_legacy.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_legacy.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_legacy.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_legacy.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32f1xx_hal_can_legacy.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32_assert_template.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32_assert_template.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32_assert_template.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32_assert_template.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_can.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_can.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_can.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_can.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cec.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cec.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cec.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cec.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_conf_template.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_conf_template.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_conf_template.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_conf_template.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_crc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_crc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_crc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_crc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dac_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_eth.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_eth.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_eth.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_eth.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_hcd.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_hcd.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_hcd.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_hcd.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2s.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2s.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2s.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2s.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_irda.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_irda.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_irda.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_irda.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_iwdg.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_iwdg.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_iwdg.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_iwdg.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_mmc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_mmc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_mmc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_mmc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nand.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nand.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nand.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nand.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nor.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nor.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nor.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_nor.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pccard.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pccard.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pccard.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pccard.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rtc_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sd.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sd.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sd.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sd.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_smartcard.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_smartcard.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_smartcard.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_smartcard.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sram.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sram.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sram.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_sram.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_usart.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_usart.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_usart.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_usart.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_wwdg.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_wwdg.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_wwdg.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_wwdg.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_fsmc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_fsmc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_fsmc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_fsmc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_iwdg.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_iwdg.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_iwdg.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_iwdg.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rtc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rtc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rtc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rtc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_sdmmc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_sdmmc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_sdmmc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_sdmmc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_wwdg.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_wwdg.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_wwdg.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_wwdg.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cec.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cec.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cec.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cec.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_crc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_crc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_crc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_crc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dac_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_eth.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_eth.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_eth.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_eth.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_hcd.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_hcd.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_hcd.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_hcd.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2s.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2s.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2s.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2s.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_irda.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_irda.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_irda.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_irda.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_iwdg.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_iwdg.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_iwdg.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_iwdg.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_mmc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_mmc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_mmc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_mmc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_msp_template.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_msp_template.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_msp_template.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_msp_template.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nand.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nand.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nand.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nand.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nor.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nor.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nor.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_nor.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pccard.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pccard.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pccard.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pccard.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sd.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sd.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sd.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sd.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_smartcard.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_smartcard.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_smartcard.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_smartcard.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sram.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sram.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sram.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_sram.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_rtc_alarm_template.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_rtc_alarm_template.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_rtc_alarm_template.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_rtc_alarm_template.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_tim_template.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_tim_template.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_tim_template.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_timebase_tim_template.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_usart.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_wwdg.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_wwdg.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_wwdg.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_wwdg.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_fsmc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_fsmc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_fsmc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_fsmc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rtc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rtc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rtc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rtc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_sdmmc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_sdmmc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_sdmmc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_sdmmc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_gpio.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_rcc.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.c diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.h similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_matlab_tim.h diff --git a/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_periph_registers.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_periph_registers.c similarity index 100% rename from MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_periph_registers.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/Drivers/STM32F1xx_SIMULINK/stm32f1xx_periph_registers.c diff --git a/MCU_STM32F1xx_Matlab/stm32_defs.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/stm32_defs.h similarity index 100% rename from MCU_STM32F1xx_Matlab/stm32_defs.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/stm32_defs.h diff --git a/MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.c b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.c similarity index 100% rename from MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.c rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.c diff --git a/MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.h b/.outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.h similarity index 100% rename from MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.h rename to .outdate/stm32f1xx test/MCU_STM32F1xx_Matlab/stm32f1xx_matlab_conf.h diff --git a/Core.stm32f4xx/Inc/gpio.h b/.outdate/stm32f4xx test/Core.stm32f4xx2/Inc/gpio.h similarity index 100% rename from Core.stm32f4xx/Inc/gpio.h rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Inc/gpio.h diff --git a/Core.stm32f4xx/Inc/main.h b/.outdate/stm32f4xx test/Core.stm32f4xx2/Inc/main.h similarity index 100% rename from Core.stm32f4xx/Inc/main.h rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Inc/main.h diff --git a/Core.stm32f4xx/Inc/proj_setup.h b/.outdate/stm32f4xx test/Core.stm32f4xx2/Inc/proj_setup.h similarity index 100% rename from Core.stm32f4xx/Inc/proj_setup.h rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Inc/proj_setup.h diff --git a/Core.stm32f4xx/Inc/stm32f4xx_hal_conf.h b/.outdate/stm32f4xx test/Core.stm32f4xx2/Inc/stm32f4xx_hal_conf.h similarity index 100% rename from Core.stm32f4xx/Inc/stm32f4xx_hal_conf.h rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Inc/stm32f4xx_hal_conf.h diff --git a/Core.stm32f4xx/Inc/stm32f4xx_it.h b/.outdate/stm32f4xx test/Core.stm32f4xx2/Inc/stm32f4xx_it.h similarity index 100% rename from Core.stm32f4xx/Inc/stm32f4xx_it.h rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Inc/stm32f4xx_it.h diff --git a/Core.stm32f4xx/Inc/tim.h b/.outdate/stm32f4xx test/Core.stm32f4xx2/Inc/tim.h similarity index 100% rename from Core.stm32f4xx/Inc/tim.h rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Inc/tim.h diff --git a/Core.stm32f4xx/Src/gpio.c b/.outdate/stm32f4xx test/Core.stm32f4xx2/Src/gpio.c similarity index 100% rename from Core.stm32f4xx/Src/gpio.c rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Src/gpio.c diff --git a/Core.stm32f4xx/Src/main.c b/.outdate/stm32f4xx test/Core.stm32f4xx2/Src/main.c similarity index 100% rename from Core.stm32f4xx/Src/main.c rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Src/main.c diff --git a/Core.stm32f4xx/Src/stm32f4xx_hal_msp.c b/.outdate/stm32f4xx test/Core.stm32f4xx2/Src/stm32f4xx_hal_msp.c similarity index 100% rename from Core.stm32f4xx/Src/stm32f4xx_hal_msp.c rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Src/stm32f4xx_hal_msp.c diff --git a/Core.stm32f4xx/Src/stm32f4xx_it.c b/.outdate/stm32f4xx test/Core.stm32f4xx2/Src/stm32f4xx_it.c similarity index 100% rename from Core.stm32f4xx/Src/stm32f4xx_it.c rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Src/stm32f4xx_it.c diff --git a/Core.stm32f4xx/Src/system_stm32f4xx.c b/.outdate/stm32f4xx test/Core.stm32f4xx2/Src/system_stm32f4xx.c similarity index 100% rename from Core.stm32f4xx/Src/system_stm32f4xx.c rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Src/system_stm32f4xx.c diff --git a/Core.stm32f4xx/Src/tim.c b/.outdate/stm32f4xx test/Core.stm32f4xx2/Src/tim.c similarity index 100% rename from Core.stm32f4xx/Src/tim.c rename to .outdate/stm32f4xx test/Core.stm32f4xx2/Src/tim.c diff --git a/Code/Core/Src/main.c b/Code/Core/Src/main.c index 129e9c9..eafa273 100644 --- a/Code/Core/Src/main.c +++ b/Code/Core/Src/main.c @@ -153,6 +153,7 @@ int main(void) log_ctrl[R_LOG_CTRL_LOG_SIZE] = 50; log_ctrl[R_LOG_CTRL_LOG_PWM_NUMB] = 3; + WriteSettingsToMem(); MODBUS_FirstInit(); Control_Timer_FirstInit(); PWM_Sine_FirstInit(); diff --git a/Code/Modbus/modbus.c b/Code/Modbus/modbus.c index d54318c..951b0b1 100644 --- a/Code/Modbus/modbus.c +++ b/Code/Modbus/modbus.c @@ -45,9 +45,9 @@ modbus1_suart.huart = &modbus1_huart; modbus1_suart.huart->Instance = USED_MODBUS_UART; modbus1_suart.huart->Init.BaudRate = 38400; - modbus1_suart.GPIOx = MB_GPIOX; - modbus1_suart.GPIO_PIN_RX = MB_GPIO_PIN_RX; - modbus1_suart.GPIO_PIN_TX = MB_GPIO_PIN_TX; + modbus1_suart.GPIOx = MODBUS_GPIOX; + modbus1_suart.GPIO_PIN_RX = MODBUS_GPIO_PIN_RX; + modbus1_suart.GPIO_PIN_TX = MODBUS_GPIO_PIN_TX; // set up timeout TIM for modbus modbus1_stim.htim = &modbus1_htim; @@ -99,21 +99,21 @@ void MODBUS_FirstInit(void) //-----------SETUP MODBUS------------- // set up UART for modbus modbus1_suart.huart.Instance = USED_MODBUS_UART; - modbus1_suart.huart.Init.BaudRate = MB_SPEED; - modbus1_suart.GPIOx = MB_GPIOX; - modbus1_suart.GPIO_PIN_RX = MB_GPIO_PIN_RX; - modbus1_suart.GPIO_PIN_TX = MB_GPIO_PIN_TX; + modbus1_suart.huart.Init.BaudRate = PROJSET.MB_SPEED; + modbus1_suart.GPIOx = (GPIO_TypeDef *)PROJSET.MB_GPIOX; + modbus1_suart.GPIO_PIN_RX = PROJSET.MB_GPIO_PIN_RX; + modbus1_suart.GPIO_PIN_TX = PROJSET.MB_GPIO_PIN_TX; // set up timeout TIM for modbus modbus1_stim.htim.Instance = USED_MODBUS_TIM; - modbus1_stim.sTimAHBFreqMHz = MB_TIM_AHB_FREQ; + modbus1_stim.sTimAHBFreqMHz = PROJSET.MB_TIM_AHB_FREQ; modbus1_stim.sTimMode = TIM_IT_CONF; // set up modbus: MB_RX_Size_NotConst and Timeout enable - hmodbus1.ID = MB_ID; - hmodbus1.sRS_RX_Size_Mode = RS_RX_Size_NotConst; - hmodbus1.sRS_Timeout = MB_MAX_TIMEOUT; + hmodbus1.ID = PROJSET.MB_DEVICE_ID; + hmodbus1.sRS_Timeout = PROJSET.MB_MAX_TIMEOUT; hmodbus1.sRS_Mode = SLAVE_ALWAYS_WAIT; + hmodbus1.sRS_RX_Size_Mode = RS_RX_Size_NotConst; // INIT hmodbus1.RS_STATUS = RS_Init(&hmodbus1, &modbus1_suart, &modbus1_stim, 0); @@ -811,17 +811,17 @@ RS_StatusTypeDef RS_Define_Size_of_RX_Message(RS_HandleTypeDef *hmodbus, uint32_ //------------------------------------------------------------------- //-------------------------HANDLERS FUNCTION------------------------- -#if (MB_UART_NUMB == 1) // choose handler for UART +#if (MODBUS_UART_NUMB == 1) // choose handler for UART void USART1_IRQHandler(void) -#elif (MB_UART_NUMB == 2) +#elif (MODBUS_UART_NUMB == 2) void USART2_IRQHandler(void) -#elif (MB_UART_NUMB == 3) +#elif (MODBUS_UART_NUMB == 3) void USART3_IRQHandler(void) -#elif (MB_UART_NUMB == 4) +#elif (MODBUS_UART_NUMB == 4) void USART4_IRQHandler(void) -#elif (MB_UART_NUMB == 5) +#elif (MODBUS_UART_NUMB == 5) void USART5_IRQHandler(void) -#elif (MB_UART_NUMB == 6) +#elif (MODBUS_UART_NUMB == 6) void USART6_IRQHandler(void) #endif { @@ -829,29 +829,29 @@ void USART6_IRQHandler(void) RS_UART_Handler(&hmodbus1); Trace_MB_UART_Exit(); } -#if (MB_TIM_NUMB == 1) || (MB_TIM_NUMB == 10) // choose handler for TIM +#if (MODBUS_TIM_NUMB == 1) || (MODBUS_TIM_NUMB == 10) // choose handler for TIM void TIM1_UP_TIM10_IRQHandler(void) -#elif (MB_TIM_NUMB == 2) +#elif (MODBUS_TIM_NUMB == 2) void TIM2_IRQHandler(void) -#elif (MB_TIM_NUMB == 3) +#elif (MODBUS_TIM_NUMB == 3) void TIM3_IRQHandler(void) -#elif (MB_TIM_NUMB == 4) +#elif (MODBUS_TIM_NUMB == 4) void TIM4_IRQHandler(void) -#elif (MB_TIM_NUMB == 5) +#elif (MODBUS_TIM_NUMB == 5) void TIM5_IRQHandler(void) -#elif (MB_TIM_NUMB == 6) +#elif (MODBUS_TIM_NUMB == 6) void TIM6_DAC_IRQHandler(void) -#elif (MB_TIM_NUMB == 7) +#elif (MODBUS_TIM_NUMB == 7) void TIM7_IRQHandler(void) -#elif (MB_TIM_NUMB == 8) || (MB_TIM_NUMB == 13) +#elif (MODBUS_TIM_NUMB == 8) || (MODBUS_TIM_NUMB == 13) void TIM8_UP_TIM13_IRQHandler(void) -#elif (MB_TIM_NUMB == 1) || (MB_TIM_NUMB == 9) +#elif (MODBUS_TIM_NUMB == 1) || (MODBUS_TIM_NUMB == 9) void TIM1_BRK_TIM9_IRQHandler(void) -#elif (MB_TIM_NUMB == 1) || (MB_TIM_NUMB == 11) +#elif (MODBUS_TIM_NUMB == 1) || (MODBUS_TIM_NUMB == 11) void TIM1_TRG_COM_TIM11_IRQHandler(void) -#elif (MB_TIM_NUMB == 8) || (MB_TIM_NUMB == 12) +#elif (MODBUS_TIM_NUMB == 8) || (MODBUS_TIM_NUMB == 12) void TIM8_BRK_TIM12_IRQHandler(void) -#elif (MB_TIM_NUMB == 8) || (MB_TIM_NUMB == 14) +#elif (MODBUS_TIM_NUMB == 8) || (MODBUS_TIM_NUMB == 14) void TIM8_TRG_COM_TIM14_IRQHandler(void) #endif { diff --git a/Code/Modbus/modbus.h b/Code/Modbus/modbus.h index cafed7d..0479966 100644 --- a/Code/Modbus/modbus.h +++ b/Code/Modbus/modbus.h @@ -9,32 +9,29 @@ MODBUS. #include "stm32f4xx_hal.h" #include "modbus_data.h" +#include "settings.h" // for modbus settings ///////////////////////////////////////////////////////////////////// //////////////////////////---SETTINGS---///////////////////////////// -//----------DEFINES FOR MODBUS SETTING-------------- -#define MB_UART_NUMB 3 // number of used uart -#define MB_SPEED 115200 -#define MB_GPIOX GPIOB -#define MB_GPIO_PIN_RX GPIO_PIN_11 -#define MB_GPIO_PIN_TX GPIO_PIN_10 -/* accord to this define sets define USED_MB_UART = USARTx */ -#define MB_TIM_NUMB 7 // number of used uart -#define MB_TIM_AHB_FREQ 72 -/* accord to this define sets define USED_MB_TIM = TIMx */ +////----------DEFINES FOR MODBUS SETTING-------------- +//#define MODBUS_UART_NUMB 3 // number of used uart +//#define MODBUS_SPEED 115200 +//#define MODBUS_GPIOX GPIOB +//#define MODBUS_GPIO_PIN_RX GPIO_PIN_11 +//#define MODBUS_GPIO_PIN_TX GPIO_PIN_10 +///* accord to this define sets define USED_MB_UART = USARTx */ +//#define MODBUS_TIM_NUMB 7 // number of used uart +//#define MODBUS_TIM_AHB_FREQ 72 +///* accord to this define sets define USED_MB_TIM = TIMx */ -/* defines for modbus behaviour */ -#define MB_ID 1 // number of used uart -#define MB_MAX_TIMEOUT 5000 // is ms -// custom define for size of receive message -//-------------------------------------------------- +///* defines for modbus behaviour */ +//#define MODBUS_DEVICE_ID 1 // number of used uart +//#define MODBUS_MAX_TIMEOUT 5000 // is ms +//// custom define for size of receive message +////-------------------------------------------------- //---------------MODBUS DEVICE DATA----------------- - - - /* EXTERN REGISTERS/COILS */ - extern uint16_t sine_log[R_SINE_LOG_QNT]; // start from 0x0000 extern uint16_t pwm_log[R_PWM_LOG_QNT]; // start from 500 (0x1F4) extern uint16_t cnt_log[R_CNT_LOG_QNT]; // start from 100 (0x3E8) @@ -136,7 +133,7 @@ typedef enum }MB_CoilsOpTypeDef; //------------DEFINES FOR PROCESS DATA-------------- -/**S +/** * @brief Calc dividing including remainder * @param _val_ - делимое. * @param _div_ - делитель. @@ -353,66 +350,66 @@ uint8_t MB_Write_Miltuple_Regs(RS_MsgTypeDef *modbus_msg); /////////////////////////---CALC DEFINES---////////////////////////// /* set USART_TypeDef for choosen numb of usart */ -#if (MB_UART_NUMB == 1) +#if (MODBUS_UART_NUMB == 1) #define USED_MODBUS_UART USART1 #define USE_USART1 -#elif (MB_UART_NUMB == 2) +#elif (MODBUS_UART_NUMB == 2) #define USED_MODBUS_UART USART2 #define USE_USART2 -#elif (MB_UART_NUMB == 3) +#elif (MODBUS_UART_NUMB == 3) #define USED_MODBUS_UART USART3 #define USE_USART3 -#elif (MB_UART_NUMB == 4) +#elif (MODBUS_UART_NUMB == 4) #define USED_MODBUS_UART UART4 #define USE_UART4 -#elif (MB_UART_NUMB == 5) +#elif (MODBUS_UART_NUMB == 5) #define USED_MODBUS_UART UART5 #define USE_UART6 -#elif (MB_UART_NUMB == 6) +#elif (MODBUS_UART_NUMB == 6) #define USED_MODBUS_UART USART6 #define USE_USART6 #endif -#if (MB_TIM_NUMB == 1) +#if (MODBUS_TIM_NUMB == 1) #define USED_MODBUS_TIM TIM1 #define USE_TIM1 -#elif (MB_TIM_NUMB == 2) +#elif (MODBUS_TIM_NUMB == 2) #define USED_MODBUS_TIM TIM2 #define USE_TIM2 -#elif (MB_TIM_NUMB == 3) +#elif (MODBUS_TIM_NUMB == 3) #define USED_MODBUS_TIM TIM3 #define USE_TIM3 -#elif (MB_TIM_NUMB == 4) +#elif (MODBUS_TIM_NUMB == 4) #define USED_MODBUS_TIM TIM4 #define USE_TIM4 -#elif (MB_TIM_NUMB == 5) +#elif (MODBUS_TIM_NUMB == 5) #define USED_MODBUS_TIM TIM5 #define USE_TIM5 -#elif (MB_TIM_NUMB == 6) +#elif (MODBUS_TIM_NUMB == 6) #define USED_MODBUS_TIM TIM6 #define USE_TIM6 -#elif (MB_TIM_NUMB == 7) +#elif (MODBUS_TIM_NUMB == 7) #define USED_MODBUS_TIM TIM7 #define USE_TIM7 -#elif (MB_TIM_NUMB == 8) +#elif (MODBUS_TIM_NUMB == 8) #define USED_MODBUS_TIM TIM8 #define USE_TIM8 -#elif (MB_TIM_NUMB == 9) +#elif (MODBUS_TIM_NUMB == 9) #define USED_MODBUS_TIM TIM9 #define USE_TIM9 -#elif (MB_TIM_NUMB == 10) +#elif (MODBUS_TIM_NUMB == 10) #define USED_MODBUS_TIM TIM10 #define USE_TIM10 -#elif (MB_TIM_NUMB == 11) +#elif (MODBUS_TIM_NUMB == 11) #define USED_MODBUS_TIM TIM11 #define USE_TIM11 -#elif (MB_TIM_NUMB == 12) +#elif (MODBUS_TIM_NUMB == 12) #define USED_MODBUS_TIM TIM12 #define USE_TIM12 -#elif (MB_TIM_NUMB == 13) +#elif (MODBUS_TIM_NUMB == 13) #define USED_MODBUS_TIM TIM13 #define USE_TIM13 -#elif (MB_TIM_NUMB == 14) +#elif (MODBUS_TIM_NUMB == 14) #define USED_MODBUS_TIM TIM14 #define USE_TIM14 #endif diff --git a/Code/PWM/control.c b/Code/PWM/control.c index 14a4193..c907d0f 100644 --- a/Code/PWM/control.c +++ b/Code/PWM/control.c @@ -189,7 +189,7 @@ void Set_Log_Params(void) void Control_Timer_ReInit(TIM_SettingsTypeDef *stim) { TIM_Base_MspDeInit(&stim->htim); - hpwm1.stim.sTickBaseMHz = TIMER_CTRL_TICKBASE; + hpwm1.stim.sTickBaseMHz = PROJSET.TIM_CTRL_TICKBASE; TIM_Base_Init(stim); HAL_TIM_Base_Start_IT(&stim->htim); // timer for sinus @@ -206,8 +206,8 @@ void Control_Timer_FirstInit(void) // tim settings TIM_CTRL.htim.Instance = TIM12; TIM_CTRL.sTimMode = TIM_IT_MODE; - TIM_CTRL.sTickBaseMHz = TIMER_CTRL_TICKBASE; - TIM_CTRL.sTimAHBFreqMHz = TIMER_CTRL_AHB_FREQ; + TIM_CTRL.sTickBaseMHz = PROJSET.TIM_CTRL_TICKBASE; + TIM_CTRL.sTimAHBFreqMHz = PROJSET.TIM_CTRL_AHB_FREQ; TIM_CTRL.sTimFreqHz = HZ_TIMER_CTRL; TIM_Base_Init(&TIM_CTRL); @@ -233,6 +233,8 @@ void TIM8_BRK_TIM12_IRQHandler(void) Fill_Logs_with_Data(); Update_Params_For_Log(); Update_Params_For_PWM(&hpwm1); - Trace_CTRL_TIM_Exit(); + WriteSettingsToMem(); + + Trace_CTRL_TIM_Exit(); } \ No newline at end of file diff --git a/Code/PWM/control.h b/Code/PWM/control.h index 534db92..d42e12e 100644 --- a/Code/PWM/control.h +++ b/Code/PWM/control.h @@ -1,8 +1,8 @@ #ifndef __CONTROL_H_ #define __CONTROL_H_ -#include "modbus_data.h" #include "periph_general.h" +#include "modbus.h" #include "math.h" #include "settings.h" diff --git a/Code/PWM/control_def.h b/Code/PWM/control_def.h deleted file mode 100644 index 8975eb3..0000000 --- a/Code/PWM/control_def.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef __CONTROL_H_ -#define __CONTROL_H_ - -#include "modbus_data.h" -#include "periph_general.h" -#include "math.h" - -#define M_PI 3.14159265358979323846 /* pi */ - -// defines for timers -#define HZ_TIMER_CTRL 400 -#define HZ_TIMER_PWM 1000 - - -// defines for PWMs -//#define INTERNAL_THREE_PHASE_PWM_ENABLE // pwm with timer in slave mode: time shift less than 1 period of PWM -//#define SINE_THREE_PHASE_PWM_ENABLE // pwm sine with time shift - -#define SIN_TABLE_SIZE_MAX HZ_TIMER_PWM - - -// defines for filling arrays -#define CALC_SAMPLES_PER_PERIOD(_hztim_, _hztarget_) (_hztim_/_hztarget_) -//(TIM_CTRL.sTimFreq/PWM.PWM_Value) - -// OR define samples -//#define SAMPLES_PER_PERIOD 10 -//#define HZ_TIMER_CTRL (HZ_SINUS*SAMPLES_PER_PERIOD) - -#define CALC_NUMB_OF_PERIODS(_arr_size_, _hztim_, _hztarget_) (_arr_size_/CALC_SAMPLES_PER_PERIOD(_hztim_, _hztarget_)) -//#define NUMB_OF_PERIODS (5) - -#define CALC_ARR_SIZE(_numb_of_periods_, _samples_per_period_) ((_numb_of_periods_)*(_samples_per_period_)) - - - - -#endif // __CONTROL_H_ \ No newline at end of file diff --git a/Code/PWM/pwm.c b/Code/PWM/pwm.c index d6ee882..8ced758 100644 --- a/Code/PWM/pwm.c +++ b/Code/PWM/pwm.c @@ -1,4 +1,5 @@ #include "pwm.h" +//#include "rng.h" PWM_HandleTypeDef hpwm1; PWM_SlaveHandleTypeDef hpwm2; @@ -32,16 +33,16 @@ void PWM_Sine_FirstInit(void) hpwm1.sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; // tim1 settings - hpwm1.stim.htim.Instance = TIMER_PWM_INSTANCE; + hpwm1.stim.htim.Instance = TIMER_PWM1_INSTANCE; hpwm1.stim.sTimMode = TIM_IT_MODE; - hpwm1.stim.sTickBaseMHz = TIMER_PWM_TICKBASE; - hpwm1.stim.sTimAHBFreqMHz = TIMER_PWM_AHB_FREQ; hpwm1.stim.sTimFreqHz = HZ_TIMER_PWM; - hpwm1.GPIOx = TIMER_PWM_GPIOx; - hpwm1.GPIO_PIN_X1 = TIMER_PWM_GPIO_PIN_X1; - hpwm1.GPIO_PIN_X2 = TIMER_PWM_GPIO_PIN_X2; - hpwm1.PWM_Channel1 = TIMER_PWM_TIM_CHANNEL1; - hpwm1.PWM_Channel2 = TIMER_PWM_TIM_CHANNEL2; + hpwm1.stim.sTickBaseMHz = PROJSET.TIM_PWM_TICKBASE; + hpwm1.stim.sTimAHBFreqMHz = PROJSET.TIM_PWM_AHB_FREQ; + hpwm1.GPIOx = TIMER_PWM1_GPIOx; + hpwm1.GPIO_PIN_X1 = PROJSET.TIM_PWM1_GPIO_PIN_X1; + hpwm1.GPIO_PIN_X2 = PROJSET.TIM_PWM1_GPIO_PIN_X2; + hpwm1.PWM_Channel1 = PROJSET.TIM_PWM1_TIM_CHANNEL1; + hpwm1.PWM_Channel2 = PROJSET.TIM_PWM1_TIM_CHANNEL2; hpwm1.hpwm2 = (void *)&hpwm2; hpwm1.hpwm3 = (void *)&hpwm3; @@ -53,22 +54,22 @@ void PWM_Sine_FirstInit(void) // PWM SLAVES INIT hpwm2.hMasterPWM = &hpwm1; hpwm2.stim = hpwm1.stim; - hpwm2.stim.htim.Instance = TIMER_PWM2_INSTANCE; - hpwm2.GPIOx = TIMER_PWM2_GPIOx; - hpwm2.GPIO_PIN_X1 = TIMER_PWM2_GPIO_PIN_X1; - hpwm2.GPIO_PIN_X2 = TIMER_PWM2_GPIO_PIN_X2; - hpwm2.PWM_Channel1 = TIMER_PWM2_TIM_CHANNEL1; - hpwm2.PWM_Channel2 = TIMER_PWM2_TIM_CHANNEL2; + hpwm2.stim.htim.Instance = (TIM_TypeDef *)PROJSET.TIM_PWM2_INSTANCE; + hpwm2.GPIOx = (GPIO_TypeDef *)PROJSET.TIM_PWM2_GPIOx; + hpwm2.GPIO_PIN_X1 = PROJSET.TIM_PWM2_GPIO_PIN_X1; + hpwm2.GPIO_PIN_X2 = PROJSET.TIM_PWM2_GPIO_PIN_X2; + hpwm2.PWM_Channel1 = PROJSET.TIM_PWM2_TIM_CHANNEL1; + hpwm2.PWM_Channel2 = PROJSET.TIM_PWM2_TIM_CHANNEL2; hpwm2.Duty_Shift_Ratio = (float)2/3; hpwm3.hMasterPWM = &hpwm1; hpwm3.stim = hpwm1.stim; - hpwm3.stim.htim.Instance = TIMER_PWM3_INSTANCE; - hpwm3.GPIOx = TIMER_PWM3_GPIOx; - hpwm3.GPIO_PIN_X1 = TIMER_PWM3_GPIO_PIN_X1; - hpwm3.GPIO_PIN_X2 = TIMER_PWM3_GPIO_PIN_X2; - hpwm3.PWM_Channel1 = TIMER_PWM3_TIM_CHANNEL1; - hpwm3.PWM_Channel2 = TIMER_PWM3_TIM_CHANNEL2; + hpwm3.stim.htim.Instance = (TIM_TypeDef *)PROJSET.TIM_PWM3_INSTANCE; + hpwm3.GPIOx = (GPIO_TypeDef *)PROJSET.TIM_PWM3_GPIOx; + hpwm3.GPIO_PIN_X1 = PROJSET.TIM_PWM3_GPIO_PIN_X1; + hpwm3.GPIO_PIN_X2 = PROJSET.TIM_PWM3_GPIO_PIN_X2; + hpwm3.PWM_Channel1 = PROJSET.TIM_PWM3_TIM_CHANNEL1; + hpwm3.PWM_Channel2 = PROJSET.TIM_PWM3_TIM_CHANNEL2; hpwm3.Duty_Shift_Ratio = (float)-2/3; PWM_SlavePhase_Init(&hpwm2); @@ -116,13 +117,13 @@ void PWM_Handler(PWM_HandleTypeDef *hpwm) if(Duty >= 0) { - PWM_Set_Compare1(hpwm, Duty+PWM_Sine_Calc_Min_Duty(hpwm)); // set first channel + PWM_Set_Compare1(hpwm, Duty); // set first channel PWM_Set_Compare2(hpwm, 0); // reset second channel } else // если это вторая полуволна { PWM_Set_Compare1(hpwm, 0); // reset first channel - PWM_Set_Compare2(hpwm, (-Duty)+PWM_Sine_Calc_Min_Duty(hpwm)); // set second channel + PWM_Set_Compare2(hpwm, -Duty); // set second channel } PWM_SlavePhase_Set_DutyTable_Signed(PWM_Set_pSlaveHandle(hpwm,hpwm2), sin_ind); @@ -147,30 +148,53 @@ void PWM_Handler(PWM_HandleTypeDef *hpwm) PWM_Set_Compare2(PWM_Set_pSlaveHandle(hpwm,hpwm2), 0); // reset second channel PWM_Set_Compare1(PWM_Set_pSlaveHandle(hpwm,hpwm3), 0); // reset first channel PWM_Set_Compare2(PWM_Set_pSlaveHandle(hpwm,hpwm3), 0); // reset second channel +// uint32_t pwm_rng = 0; +// HAL_RNG_GenerateRandomNumber(&hrng, &pwm_rng); +// pwm_rng = ((pwm_rng&0xFFFF)/(0xFFFF/PWM_Get_Autoreload(hpwm)))/((float)100/hpwm->PWM_Value); +// if (pwm_rng < PWM_Calc_Min_Duty(hpwm)) +// pwm_rng = PWM_Calc_Min_Duty(hpwm); // if second channel enabled if(PWM_Get_Mode(hpwm, PWM_CH_MODE)) { - PWM_Set_Compare1(hpwm, 0); // reset first channel + PWM_Set_Compare1(hpwm, 0); // reset first channel PWM_Set_Duty_From_Percent(hpwm, hpwm->PWM_Channel2); // set second channel +// __HAL_TIM_SET_COMPARE(&(hpwm->stim.htim), TIM_CHANNEL_2, pwm_rng); // set second channel } // if first channel enabled else { +// __HAL_TIM_SET_COMPARE(&(hpwm->stim.htim), TIM_CHANNEL_1, pwm_rng); // set second channel PWM_Set_Duty_From_Percent(hpwm, hpwm->PWM_Channel1); // set first channel PWM_Set_Compare2(hpwm, 0); // reset second channel } } //-----CHECK CHANNELS FOR ERRORS----- + uint16_t min_duty = PWM_Calc_Min_Duty(hpwm); + // IF FIRST CHANNEL IS ACRIVE + if(PWM_Get_Compare1(hpwm) != 0) + { + // Duty shoud be bigger or equeal than min duration + if (PWM_Get_Compare1(hpwm)PWM_Get_Autoreload(hpwm)-min_duty) + PWM_Set_Compare1(hpwm, PWM_Get_Autoreload(hpwm)-min_duty); + } + // IF SECOND CHANNEL IS ACRIVE + else if(PWM_Get_Compare2(hpwm) != 0) + { + // Duty shoud be bigger or equeal than min duration + if (PWM_Get_Compare2(hpwm)PWM_Get_Autoreload(hpwm)) - PWM_Set_Compare1(hpwm, PWM_Get_Autoreload(hpwm)); - // Duty shoud be less or equeal than ARR - if (PWM_Get_Compare2(hpwm)>PWM_Get_Autoreload(hpwm)) - PWM_Set_Compare2(hpwm, PWM_Get_Autoreload(hpwm)); - // Only one channel shoud be active + if (PWM_Get_Compare2(hpwm)>PWM_Get_Autoreload(hpwm)-min_duty) + PWM_Set_Compare2(hpwm, PWM_Get_Autoreload(hpwm)-min_duty); + } + // IF BOTH CHANNEL IS ACRIVE if((PWM_Get_Compare1(hpwm) != 0) && (PWM_Get_Compare2(hpwm) != 0)) { + // Only one channel shoud be active so disable all PWM_Set_Compare1(hpwm, 0); PWM_Set_Compare2(hpwm, 0); } @@ -546,14 +570,16 @@ void PWM_SlavePhase_Set_DutyTable_Signed(PWM_SlaveHandleTypeDef *hspwm, uint16_t // если это первая полуволна if(Duty > 0) { - PWM_Set_Compare1(hspwm, Duty+PWM_Sine_Calc_Min_Duty(hspwm->hMasterPWM)); // set first channel + PWM_Set_Compare1(hspwm, Duty+PWM_Calc_Min_Duty(hspwm->hMasterPWM)); // set first channel PWM_Set_Compare2(hspwm, 0); // reset second channel } else // если это вторая полуволна { PWM_Set_Compare1(hspwm, 0); // reset first channel - PWM_Set_Compare2(hspwm, (-Duty)+PWM_Sine_Calc_Min_Duty(hspwm->hMasterPWM)); // set second channel + PWM_Set_Compare2(hspwm, (-Duty)+PWM_Calc_Min_Duty(hspwm->hMasterPWM)); // set second channel } + //if(hspwm == &hpwm2) + //__ASM(""); } else // if three phase disabled { @@ -574,20 +600,34 @@ void PWM_SlavePhase_Check_Channels(PWM_SlaveHandleTypeDef *hspwm) // if three phase enables if (PWM_Get_Mode(hspwm->hMasterPWM, PWM_PHASE_MODE)) { + uint16_t min_duty = PWM_Calc_Min_Duty(hspwm->hMasterPWM); + // IF FIRST CHANNEL IS ACRIVE + if(PWM_Get_Compare1(hspwm) != 0) + { + // Duty shoud be bigger or equeal than min duration + if (PWM_Get_Compare1(hspwm)PWM_Get_Autoreload(hspwm)-min_duty) + PWM_Set_Compare1(hspwm, PWM_Get_Autoreload(hspwm)-min_duty); + } + // IF SECOND CHANNEL IS ACRIVE + else if(PWM_Get_Compare2(hspwm) != 0) + // Duty shoud be bigger or equeal than min duration + if (PWM_Get_Compare2(hspwm)PWM_Get_Autoreload(hspwm)) - PWM_Set_Compare1(hspwm, PWM_Get_Autoreload(hspwm)); - // Duty shoud be less or equeal than ARR - if (PWM_Get_Compare2(hspwm)>PWM_Get_Autoreload(hspwm)) - PWM_Set_Compare2(hspwm, PWM_Get_Autoreload(hspwm)); - // Only one channel shoud be active + if (PWM_Get_Compare2(hspwm)>PWM_Get_Autoreload(hspwm)-min_duty) + PWM_Set_Compare2(hspwm, PWM_Get_Autoreload(hspwm)-min_duty); + // IF BOTH CHANNEL IS ACRIVE if((PWM_Get_Compare1(hspwm) != 0) && (PWM_Get_Compare2(hspwm) != 0)) - { // reset channels - PWM_Set_Compare1(hspwm, 0); // reset first channel - PWM_Set_Compare2(hspwm, 0); // reset second channel + { + // Only one channel shoud be active so disable all + PWM_Set_Compare1(hspwm, 0); + PWM_Set_Compare2(hspwm, 0); } } - else // if three phase disabled + else { // reset channels PWM_Set_Compare1(hspwm, 0); // reset first channel @@ -631,7 +671,31 @@ void PWM_SlavePhase_CreateDeadTime(PWM_SlaveHandleTypeDef *hspwm, float *LocalDe //------------------------------------------------------------------- //------------------------HANDLERS FUNCTIONS------------------------- //---------------PWM TIMER----------------- +#if (PWM_MASTER_TIM_NUMB == 1) || (PWM_MASTER_TIM_NUMB == 10) // choose handler for TIM +void TIM1_UP_TIM10_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 2) +void TIM2_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 3) +void TIM3_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 4) void TIM4_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 5) +void TIM5_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 6) +void TIM6_DAC_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 7) +void TIM7_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 8) || (PWM_MASTER_TIM_NUMB == 13) +void TIM8_UP_TIM13_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 1) || (PWM_MASTER_TIM_NUMB == 9) +void TIM1_BRK_TIM9_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 1) || (PWM_MASTER_TIM_NUMB == 11) +void TIM1_TRG_COM_TIM11_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 8) || (PWM_MASTER_TIM_NUMB == 12) +void TIM8_BRK_TIM12_IRQHandler(void) +#elif (PWM_MASTER_TIM_NUMB == 8) || (PWM_MASTER_TIM_NUMB == 14) +void TIM8_TRG_COM_TIM14_IRQHandler(void) +#endif { Trace_PWM_TIM_Enter(); HAL_TIM_IRQHandler(&hpwm1.stim.htim); @@ -668,7 +732,7 @@ void PWM_SineSingChannel_FirstInit(void) hpwm1.sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; // tim1 settings - hpwm1.stim.htim.Instance = TIMER_PWM_INSTANCE; + hpwm1.stim.htim.Instance = TIMER_PWM1_INSTANCE; hpwm1.stim.sTimMode = TIM_IT_MODE; hpwm1.stim.sTickBaseMHz = TIM_TickBase_1US; hpwm1.stim.sTimAHBFreqMHz = 72; diff --git a/Code/PWM/pwm.h b/Code/PWM/pwm.h index 6194161..093909d 100644 --- a/Code/PWM/pwm.h +++ b/Code/PWM/pwm.h @@ -23,7 +23,7 @@ extern uint32_t sin_table[SIN_TABLE_SIZE_MAX]; * @param _hpwm_ - указатель на хендл pwm. * @return _val_ - количество тиков кратчайшего импульса. */ -#define PWM_Sine_Calc_Min_Duty(_hpwm_) ((_hpwm_)->PWM_MinPulseDur/(_hpwm_)->stim.sTickBaseMHz) +#define PWM_Calc_Min_Duty(_hpwm_) ((_hpwm_)->PWM_MinPulseDur/(_hpwm_)->stim.sTickBaseMHz) /** * @brief Calc Scale Koef for Table & AUTORELOAD REGISTER * @param _hpwm_ - указатель на хендл pwm. @@ -34,7 +34,7 @@ extern uint32_t sin_table[SIN_TABLE_SIZE_MAX]; * @note Если задана минимальная длительность импульса в тактах n, она вычитается из ARR: [0, ARR-2*n] И потом регистр ARR заполняется так, что диапазон его значений будет [n, ARR-n] @ref PWM_Get_Table_Element_Unsigned */ -#define PWM_Calc_Duty_Scale(_hpwm_, _scale_) ((float)PWM_Get_Autoreload(_hpwm_)-2*PWM_Sine_Calc_Min_Duty(_hpwm_))/(_scale_) +#define PWM_Calc_Duty_Scale(_hpwm_, _scale_) ((float)PWM_Get_Autoreload(_hpwm_))/(_scale_) /** * @brief Get Table Element Scaled corresponding to TIM ARR register @@ -44,7 +44,7 @@ extern uint32_t sin_table[SIN_TABLE_SIZE_MAX]; * @note Если задана минимальная длительность импульса в тактах n, то регистр ARR заполняется так, что диапазон его значений будет [n, ARR-n] */ -#define PWM_Get_Table_Element_Unsigned(_hpwm_,_ind_) ((*((_hpwm_)->pDuty_Table_Origin+_ind_)*((_hpwm_)->Duty_Table_Scale))+PWM_Sine_Calc_Min_Duty(_hpwm_)) +#define PWM_Get_Table_Element_Unsigned(_hpwm_,_ind_) (*((_hpwm_)->pDuty_Table_Origin+_ind_)*((_hpwm_)->Duty_Table_Scale)) /** * @brief Get Table Element Scaled and Shifted corresponding to TIM ARR register @@ -208,7 +208,6 @@ typedef struct // PWM_SlaveHandleTypeDef extern PWM_SlaveHandleTypeDef hpwm2; extern PWM_SlaveHandleTypeDef hpwm3; - //--------------------------------PWM FUNCTIONS---------------------------------- /** * @brief reInitialization of PWM TIM. diff --git a/Code/PWM/settings.c b/Code/PWM/settings.c new file mode 100644 index 0000000..4f56115 --- /dev/null +++ b/Code/PWM/settings.c @@ -0,0 +1,265 @@ +#include "control.h" +ProjectSettings_TypeDef PROJSET; +uint32_t PageError = 0x00; + uint8_t UpdateSettings = 0; + +void WriteSettingsToMem(void) +{ + FillStructWithDefines(); + //HAL_FLASH_Unlock(); + // + //CheckSettingsInFLASH(); + // + //if(CheckIsSettingsValid(&PROJSET)) // if new settings are invalid + // PROJSET = *PROJSET_MEM; // take the old settings from mem + //else // if new settings are valid + // SetFlagUpdateSettingsInMem(); // save the new settings in mem (set flag to do this) + // + //HAL_FLASH_Lock(); + +} + +void SetFlagUpdateSettingsInMem(void) +{ + //UpdateSettings = 0; + //// MODBUS settings + //if(PROJSET_MEM->MB_DEVICE_ID != PROJSET.MB_DEVICE_ID) + // UpdateSettings = 1; + //if(PROJSET_MEM->MB_SPEED != PROJSET.MB_SPEED) + // UpdateSettings = 1; + //if(PROJSET_MEM->MB_GPIOX != PROJSET.MB_GPIOX) + // UpdateSettings = 1; + //if(PROJSET_MEM->MB_GPIO_PIN_RX != PROJSET.MB_GPIO_PIN_RX) + // UpdateSettings = 1; + //if(PROJSET_MEM->MB_GPIO_PIN_RX != PROJSET.MB_GPIO_PIN_RX) + // UpdateSettings = 1; + //if(PROJSET_MEM->MB_MAX_TIMEOUT != PROJSET.MB_MAX_TIMEOUT) + // UpdateSettings = 1; + // + //// PWM settings + //if(PROJSET_MEM->TIM_PWM_TICKBASE != PROJSET.TIM_PWM_TICKBASE) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM_AHB_FREQ != PROJSET.TIM_PWM_AHB_FREQ) + // UpdateSettings = 1; + // + //if(PROJSET_MEM->TIM_PWM1_TIM_CHANNEL1 != PROJSET.TIM_PWM1_TIM_CHANNEL1) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM1_TIM_CHANNEL2 != PROJSET.TIM_PWM1_TIM_CHANNEL2) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM1_GPIOx != PROJSET.TIM_PWM1_GPIOx) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM1_GPIO_PIN_X1 != PROJSET.TIM_PWM1_GPIO_PIN_X1) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM1_GPIO_PIN_X2 != PROJSET.TIM_PWM1_GPIO_PIN_X2) + // UpdateSettings = 1; + // + //if(PROJSET_MEM->TIM_PWM2_INSTANCE != PROJSET.TIM_PWM2_INSTANCE) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM2_TIM_CHANNEL1 != PROJSET.TIM_PWM2_TIM_CHANNEL1) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM2_TIM_CHANNEL2 != PROJSET.TIM_PWM2_TIM_CHANNEL2) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM2_GPIOx != PROJSET.TIM_PWM2_GPIOx) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM2_GPIO_PIN_X1 != PROJSET.TIM_PWM2_GPIO_PIN_X1) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM2_GPIO_PIN_X2 != PROJSET.TIM_PWM2_GPIO_PIN_X2) + // UpdateSettings = 1; + // + //if(PROJSET_MEM->TIM_PWM3_INSTANCE != PROJSET.TIM_PWM3_INSTANCE) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM3_TIM_CHANNEL1 != PROJSET.TIM_PWM3_TIM_CHANNEL1) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM3_TIM_CHANNEL2 != PROJSET.TIM_PWM3_TIM_CHANNEL2) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM3_GPIOx != PROJSET.TIM_PWM3_GPIOx) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM3_GPIO_PIN_X1 != PROJSET.TIM_PWM3_GPIO_PIN_X1) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_PWM3_GPIO_PIN_X2 != PROJSET.TIM_PWM3_GPIO_PIN_X2) + // UpdateSettings = 1; + // + //// CTRL settings + //if(PROJSET_MEM->TIM_CTRL_TICKBASE != PROJSET.TIM_CTRL_TICKBASE) + // UpdateSettings = 1; + //if(PROJSET_MEM->TIM_CTRL_AHB_FREQ != PROJSET.TIM_CTRL_AHB_FREQ) + // UpdateSettings = 1; +} + + +void UpdateSettingsInMem(void) +{ + //if(UpdateSettings) + //{ + // FLASH_EraseInitTypeDef EraseInitStruct; + // PageError = 0x00; + // + // EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;// erase pages + // EraseInitStruct.Banks = FLASH_BANK_1; + // EraseInitStruct.Sector = FLASH_SECTOR_4; //first sector for erase + // EraseInitStruct.NbSectors = 1;// num of sector that need to be erased + // + // HAL_FLASH_Unlock(); + // HAL_FLASHEx_Erase(&EraseInitStruct, &PageError); + // + // + // /* Wait for last operation to be completed */ + // if(FLASH_WaitForLastOperation((uint32_t)50000U) == HAL_OK) + // { + // /* If the previous operation is completed, proceed to program the new data */ + // CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); + // FLASH->CR |= FLASH_PSIZE_WORD; + // FLASH->CR |= FLASH_CR_PG; + // *PROJSET_MEM = PROJSET; // save the new settings in mem + // } + // HAL_FLASH_Lock(); + // UpdateSettings = 0; + //} +} + +void FillSettingsWithDefines(void) +{ + // rewrite all setting corresponding to defines + + //FLASH_EraseInitTypeDef EraseInitStruct; + //PageError = 0x00; + // + //EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;// erase pages + //EraseInitStruct.Banks = FLASH_BANK_1; + //EraseInitStruct.Sector = FLASH_SECTOR_4; //first sector for erase + //EraseInitStruct.NbSectors = 1;// num of sector that need to be erased + // + //HAL_FLASH_Unlock(); + //HAL_FLASHEx_Erase(&EraseInitStruct, &PageError); + //// MODBUS settings + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_DEVICE_ID, MODBUS_DEVICE_ID); + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_SPEED, MODBUS_SPEED); + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_GPIOX, (uint32_t)MODBUS_GPIOX); + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_GPIO_PIN_RX, MODBUS_GPIO_PIN_RX); + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_GPIO_PIN_TX, MODBUS_GPIO_PIN_TX); + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_MAX_TIMEOUT, MODBUS_MAX_TIMEOUT); + //FLASH_WRITE_SETTING(PROJSET_MEM->MB_TIM_AHB_FREQ, MODBUS_TIM_AHB_FREQ); + // + //// PWM settings + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM_TICKBASE, TIMER_PWM_TICKBASE); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM_AHB_FREQ, TIMER_PWM_AHB_FREQ); + // + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM1_TIM_CHANNEL1, TIMER_PWM1_TIM_CHANNEL1); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM1_TIM_CHANNEL2, TIMER_PWM1_TIM_CHANNEL2); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM1_GPIOx, (uint32_t)TIMER_PWM1_GPIOx); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM1_GPIO_PIN_X1, TIMER_PWM1_GPIO_PIN_X1); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM1_GPIO_PIN_X2, TIMER_PWM1_GPIO_PIN_X2); + // + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM2_INSTANCE, (uint32_t)TIMER_PWM2_INSTANCE); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM2_TIM_CHANNEL1, TIMER_PWM2_TIM_CHANNEL1); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM2_TIM_CHANNEL2, TIMER_PWM2_TIM_CHANNEL2); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM2_GPIOx, (uint32_t)TIMER_PWM2_GPIOx); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM2_GPIO_PIN_X1, TIMER_PWM2_GPIO_PIN_X1); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM2_GPIO_PIN_X2, TIMER_PWM2_GPIO_PIN_X2); + // + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM3_INSTANCE, (uint32_t)TIMER_PWM3_INSTANCE); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM3_TIM_CHANNEL1, TIMER_PWM3_TIM_CHANNEL1); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM3_TIM_CHANNEL2, TIMER_PWM3_TIM_CHANNEL2); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM3_GPIOx, (uint32_t)TIMER_PWM3_GPIOx); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM3_GPIO_PIN_X1, TIMER_PWM3_GPIO_PIN_X1); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_PWM3_GPIO_PIN_X2, TIMER_PWM3_GPIO_PIN_X2); + // + //// CTRL settings + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_CTRL_TICKBASE, TIMER_CTRL_TICKBASE); + //FLASH_WRITE_SETTING(PROJSET_MEM->TIM_CTRL_AHB_FREQ, TIMER_CTRL_AHB_FREQ); + //HAL_FLASH_Lock(); + +} + +void FillStructWithDefines(void) +{ + // rewrite all setting corresponding to defines + + + // MODBUS settings + STRUCT_WRITE_SETTING(PROJSET.MB_DEVICE_ID, MODBUS_DEVICE_ID); + STRUCT_WRITE_SETTING(PROJSET.MB_SPEED, MODBUS_SPEED); + STRUCT_WRITE_SETTING(PROJSET.MB_GPIOX, MODBUS_GPIOX); + STRUCT_WRITE_SETTING(PROJSET.MB_GPIO_PIN_RX, MODBUS_GPIO_PIN_RX); + STRUCT_WRITE_SETTING(PROJSET.MB_GPIO_PIN_TX, MODBUS_GPIO_PIN_TX); + STRUCT_WRITE_SETTING(PROJSET.MB_MAX_TIMEOUT, MODBUS_MAX_TIMEOUT); + STRUCT_WRITE_SETTING(PROJSET.MB_TIM_AHB_FREQ, MODBUS_TIM_AHB_FREQ); + + // PWM settings + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM_TICKBASE, TIMER_PWM_TICKBASE); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM_AHB_FREQ, TIMER_PWM_AHB_FREQ); + + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM1_TIM_CHANNEL1, TIMER_PWM1_TIM_CHANNEL1); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM1_TIM_CHANNEL2, TIMER_PWM1_TIM_CHANNEL2); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM1_GPIOx, TIMER_PWM1_GPIOx); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM1_GPIO_PIN_X1, TIMER_PWM1_GPIO_PIN_X1); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM1_GPIO_PIN_X2, TIMER_PWM1_GPIO_PIN_X2); + + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM2_INSTANCE, TIMER_PWM2_INSTANCE); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM2_TIM_CHANNEL1, TIMER_PWM2_TIM_CHANNEL1); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM2_TIM_CHANNEL2, TIMER_PWM2_TIM_CHANNEL2); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM2_GPIOx, TIMER_PWM2_GPIOx); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM2_GPIO_PIN_X1, TIMER_PWM2_GPIO_PIN_X1); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM2_GPIO_PIN_X2, TIMER_PWM2_GPIO_PIN_X2); + + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM3_INSTANCE, TIMER_PWM3_INSTANCE); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM3_TIM_CHANNEL1, TIMER_PWM3_TIM_CHANNEL1); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM3_TIM_CHANNEL2, TIMER_PWM3_TIM_CHANNEL2); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM3_GPIOx, TIMER_PWM3_GPIOx); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM3_GPIO_PIN_X1, TIMER_PWM3_GPIO_PIN_X1); + STRUCT_WRITE_SETTING(PROJSET.TIM_PWM3_GPIO_PIN_X2, TIMER_PWM3_GPIO_PIN_X2); + + // CTRL settings + STRUCT_WRITE_SETTING(PROJSET.TIM_CTRL_TICKBASE, TIMER_CTRL_TICKBASE); + STRUCT_WRITE_SETTING(PROJSET.TIM_CTRL_AHB_FREQ, TIMER_CTRL_AHB_FREQ); + +} +void CheckSettingsInFLASH(void) +{ + //if(CheckIsSettingsValid(PROJSET_MEM)) + // FillSettingsWithDefines(); + // + //PROJSET = *PROJSET_MEM; +} +int CheckIsSettingsValid(ProjectSettings_TypeDef *set_struct) +{ + // if some of setting are missing + // chech MODBUS + if((!IS_UART_BAUDRATE(set_struct->MB_SPEED) || (set_struct->MB_SPEED ) == 0) || + (!IS_GPIO_ALL_INSTANCE((GPIO_TypeDef *)set_struct->MB_GPIOX)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->MB_GPIO_PIN_TX)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->MB_GPIO_PIN_RX)) || + ((set_struct->MB_TIM_AHB_FREQ) == 0)) + { + return 1; + } + // chech control tim + if((set_struct->TIM_CTRL_AHB_FREQ) == 0) + { + return 1; + } + // chech PWM tims + if((set_struct->TIM_PWM_AHB_FREQ) == 0 || + (!IS_GPIO_ALL_INSTANCE((GPIO_TypeDef *)set_struct->TIM_PWM1_GPIOx)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->TIM_PWM1_GPIO_PIN_X1)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->TIM_PWM1_GPIO_PIN_X2)) || + (!IS_TIM_CHANNELS(set_struct->TIM_PWM1_TIM_CHANNEL1)) || + (!IS_TIM_CHANNELS(set_struct->TIM_PWM1_TIM_CHANNEL2)) || + (!IS_TIM_INSTANCE((TIM_TypeDef *)set_struct->TIM_PWM2_INSTANCE)) || + (!IS_GPIO_ALL_INSTANCE((GPIO_TypeDef *)set_struct->TIM_PWM2_GPIOx)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->TIM_PWM2_GPIO_PIN_X1)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->TIM_PWM2_GPIO_PIN_X2)) || + (!IS_TIM_CHANNELS(set_struct->TIM_PWM2_TIM_CHANNEL1)) || + (!IS_TIM_CHANNELS(set_struct->TIM_PWM2_TIM_CHANNEL2)) || + (!IS_TIM_INSTANCE((TIM_TypeDef *)set_struct->TIM_PWM3_INSTANCE)) || + (!IS_GPIO_ALL_INSTANCE((GPIO_TypeDef *)set_struct->TIM_PWM3_GPIOx)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->TIM_PWM3_GPIO_PIN_X1)) || + (!IS_GPIO_PIN((GPIO_TypeDef *)set_struct->TIM_PWM3_GPIO_PIN_X2)) || + (!IS_TIM_CHANNELS(set_struct->TIM_PWM3_TIM_CHANNEL1)) || + (!IS_TIM_CHANNELS(set_struct->TIM_PWM3_TIM_CHANNEL2))) + { + return 1; + } + + return 0; +} \ No newline at end of file diff --git a/Code/PWM/settings.h b/Code/PWM/settings.h index 9ed5c6b..3061544 100644 --- a/Code/PWM/settings.h +++ b/Code/PWM/settings.h @@ -1,17 +1,44 @@ +/********************************MODBUS************************************* +Данный файл содержит объявления базовых функции и дефайны для реализации +MODBUS. +Данный файл необходимо подключить в rs_message.h. После подключать rs_message.h +к основному проекту. +***************************************************************************/ +#ifndef __PROJ_SETTINGS_H_ +#define __PROJ_SETTINGS_H_ + +#include "stm32f4xx_hal.h" +//--------DEFINES FOR SETTING OF SETTINGS----------- +#define SETTINGS_FLASH_ADDRESS_SHIFT (0x10000) +#define SETTINGS_FLASH_ADDRESS (FLASH_BASE + SETTINGS_FLASH_ADDRESS_SHIFT) + +#define EEPROM_BASE +#define SETTINGS_EEPROM_ADDRESS_SHIFT +#define SETTINGS_EEPROM_ADDRESS (EEPROM_BASE + SETTINGS_EEPROM_ADDRESS_SHIFT) + +#ifdef USE_EEPROM +#define SETTINGS_ADDRESS SETTINGS_EEPROM_ADDRESS +#else // USE_EEPROM +#define SETTINGS_ADDRESS (SETTINGS_FLASH_ADDRESS) +#endif // USE_EEPROM +//-------------------------------------------------- +//------------DEFINES FOR PWM SETTING--------------- // settings defines #define HZ_TIMER_CTRL 400 #define HZ_TIMER_PWM 1000 // TIM PWM1 SETTINGS -#define TIMER_PWM_INSTANCE TIM4 +#define PWM_MASTER_TIM_NUMB 4 #define TIMER_PWM_TICKBASE TIM_TickBase_1US #define TIMER_PWM_AHB_FREQ 72 -#define TIMER_PWM_TIM_CHANNEL1 TIM_CHANNEL_1 -#define TIMER_PWM_TIM_CHANNEL2 TIM_CHANNEL_2 -#define TIMER_PWM_GPIOx GPIOD -#define TIMER_PWM_GPIO_PIN_X1 GPIO_PIN_12 -#define TIMER_PWM_GPIO_PIN_X2 GPIO_PIN_13 + +#define TIMER_PWM1_INSTANCE TIM4 +#define TIMER_PWM1_TIM_CHANNEL1 TIM_CHANNEL_1 +#define TIMER_PWM1_TIM_CHANNEL2 TIM_CHANNEL_2 +#define TIMER_PWM1_GPIOx GPIOD +#define TIMER_PWM1_GPIO_PIN_X1 GPIO_PIN_12 +#define TIMER_PWM1_GPIO_PIN_X2 GPIO_PIN_13 @@ -39,4 +66,86 @@ // PWM SETTINGS #define SIN_TABLE_ORIGIN sin_table -#define SIN_TABLE_SIZE_MAX 1000 \ No newline at end of file +#define SIN_TABLE_SIZE_MAX 1000 +//-------------------------------------------------- + +//----------DEFINES FOR MODBUS SETTING-------------- +#define MODBUS_UART_NUMB 3 // number of used uart +#define MODBUS_SPEED 115200 +#define MODBUS_GPIOX GPIOB +#define MODBUS_GPIO_PIN_RX GPIO_PIN_11 +#define MODBUS_GPIO_PIN_TX GPIO_PIN_10 +/* accord to this define sets define USED_MB_UART = USARTx */ +#define MODBUS_TIM_NUMB 7 // number of used uart +#define MODBUS_TIM_AHB_FREQ 72 +/* accord to this define sets define USED_MB_TIM = TIMx */ + +/* defines for modbus behaviour */ +#define MODBUS_DEVICE_ID 1 // number of used uart +#define MODBUS_MAX_TIMEOUT 5000 // is ms +// custom define for size of receive message +//-------------------------------------------------- + +typedef struct +{ + // ctrl periph settings + uint64_t TIM_CTRL_TICKBASE; + uint64_t TIM_CTRL_AHB_FREQ; + // pwm peripth settings + uint64_t TIM_PWM_TICKBASE; + uint64_t TIM_PWM_AHB_FREQ; + +// uint64_t TIM_PWM1_INSTANCE; + uint64_t TIM_PWM1_TIM_CHANNEL1; + uint64_t TIM_PWM1_TIM_CHANNEL2; + uint64_t TIM_PWM1_GPIOx; + uint64_t TIM_PWM1_GPIO_PIN_X1; + uint64_t TIM_PWM1_GPIO_PIN_X2; + + uint64_t TIM_PWM2_INSTANCE; + uint64_t TIM_PWM2_TIM_CHANNEL1; + uint64_t TIM_PWM2_TIM_CHANNEL2; + uint64_t TIM_PWM2_GPIOx; + uint64_t TIM_PWM2_GPIO_PIN_X1; + uint64_t TIM_PWM2_GPIO_PIN_X2; + + uint64_t TIM_PWM3_INSTANCE; + uint64_t TIM_PWM3_TIM_CHANNEL1; + uint64_t TIM_PWM3_TIM_CHANNEL2; + uint64_t TIM_PWM3_GPIOx; + uint64_t TIM_PWM3_GPIO_PIN_X1; + uint64_t TIM_PWM3_GPIO_PIN_X2; + + + // modbus peripth settings + uint64_t MB_DEVICE_ID; + uint64_t MB_SPEED; + uint64_t MB_GPIOX; + uint64_t MB_GPIO_PIN_RX; + uint64_t MB_GPIO_PIN_TX; + uint64_t MB_MAX_TIMEOUT; + uint64_t MB_TIM_AHB_FREQ; + +// uint32_t MB_UART_NUMB; +// uint32_t MB_TIM_NUMB; +}ProjectSettings_TypeDef; +extern ProjectSettings_TypeDef PROJSET; + +//#define PROJSET_MEM ((ProjectSettings_TypeDef *)SETTINGS_ADDRESS) + + +//#define HAL_FLASH_GET_TYPEPROGRAM(_val_) (sizeof(PROJSET_MEM->MB_DEVICE_ID)/2 - 1) +#define HAL_FLASH_GET_TYPEPROGRAM(_val_) FLASH_TYPEPROGRAM_WORD +#define FLASH_WRITE_SETTING(_setting_, _val_) HAL_FLASH_Program(HAL_FLASH_GET_TYPEPROGRAM(_setting_), (uint32_t)(&_setting_), (uint32_t)_val_); +#define STRUCT_WRITE_SETTING(_setting_, _val_) (_setting_ = _val_) + + +void FillStructWithDefines(void); +void SetFlagUpdateSettingsInMem(void); +void UpdateSettingsInMem(void); +void WriteSettingsToMem(void); +void FillSettingsWithDefines(void); +void CheckSettingsInFLASH(void); +int CheckIsSettingsValid(ProjectSettings_TypeDef *set_struct); + +#endif // __PROJ_SETTINGS_H_ \ No newline at end of file diff --git a/mcu_test.slxc b/mcu_test.slxc deleted file mode 100644 index 64c5e5c13a35c18d4bbce26a7c53e60c5d440d47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5640 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 diff --git a/mcu_test_r2021a.slx b/mcu_test_r2021a.slx index 4e4f0ecc553d5cdd64c31c99d25366bdbc0861de..ddb0e2478a4592a8d5cba22a94153df64b551217 100644 GIT binary patch delta 40737 zcmV)EK)}EG^aAkt0nao+GBrH$^ z26@YLGUqkrO2dOzHE3Ic@tl)1l-CQiwYH`h8@>g>OyCIVnj57Bv#!(yt{MMe1%Kcu z3@@+%%W`HJZVmlsr`N*?BkAe`3Zhq-#>Lv^-I~#iUUd~p4W|tStyilQlWCF=J-@DwItI^TO9OQqAhmKdu(Q^ky3yC2?^ zkY6_~^H)60CVKhbaETw0EKDd#=xlZpZZH@EXxNqQzNJwRcbAVs5A^$(K006W-XViD zInMCM=B1M_P)h>@lMuEVlY_PyvzrLZ0t%W09FcEN005s@lW+?je|1+|QP=K`w765W zNGUCpVnvEeOK~k;yv5z65TsOaE$&v_Ew~kT*8rioy9YUo`+nZ{uk!`Y7*EE?$Vhf} zcGjA6Uh{XYtOR~kl)}ZL#6m(s!j+L0S3yETK7F`jpn+HVr{F>00n=Vu%Lxeyb@Jhk zZ03fSgM{=9Nk;s=f7;jN-350~waMH2qiK0)FOL?cG5ynscYleV3;tAiME6`fJ#(u1 zwPhi6>TzN5+#al;xW#U7Sre9746%w)Fo}Bi>`SjAitoFg<^z~91J?LhN_{ z#?{xuX9;x|^HFaGAp3P2-eG;#JV}IN7<3)+IW${%7<4}ge+&;_jQk=H!+0F=jtm@l z@(x80y!;Uf(-|BTL;l}`|9kL%5B@)Tut=&N6}`kjDgVRIte}iz5Ma>kHrsn3<>ubOF&YHTx z^9u_j=G;i+IB0$S%#yWIhE<1$hpj_HP&fh%{|h&ze}tyU zkcODpF4D)sf2Uif1Ez11V9ntHW$4$m>mzg{IyySDRa=UUja?U2O#~_2+}s2NOT)Bx zhdN05e~`U!DnZil!a^9vg?va=eZ9cn_T1w_gWE;}1huI5Z!-O_37Eu<{`qExMa)c0 z>u1vjU*@XHBKKt(d3bn)MGQ2iWHn;LR#zFUt<~o3f5awJ3BM*WHsPjPS2>5AQ57Ln`CV($Y@9i8sqFPRfKUsCDl z2?E+gB7mGfo)5^6$-WM;Tzkk;?9f%*Sbo>@_w6J-->UHB%{}=W|$F#X#RB&^m} zP*$c14L#dDW7Vy-4_jL5eT1$=u~iam72VV%e06nYUag&&n3z{uYStG$RN5UMKNPc? znMw6Af6i|{!zS-`){HTorZxJE4Yeun6~37n+4j!P$HGZaR3Tkcwoel{e@!TJ6+4Nk zgnn_Ejg4CBl~-41)$-jZ@me_)gDlDU^CtjY^s9$QWNNCk_8il5`VGf@T?WhQ#I^qE zk9vB)^h>j{vpb0vRdaqurKJTYC82|QNEUK`655se`?nYo5uU1nLH}|mGoS13$6TXp z1iIt)1c#&J5HSIPytg--e|B+fUthCNp1h)nqP{)@WvEvvOj}2=!qMa+ODQ3NDVg7i zh>>waAEr|Hwn)1=1GZ6FIUEuHH7`7l(^{+PdP>Ba_d0)4W7ByMskY92X@l$=n8}zJ zlgn$gk%@_(5Q=GsJ5L6XZXn>H_Tin?1GBRf%*@QYySr~FLu2bCe}pYsG!~B%uipKo zs>eKyk5`D7XPB^jTWLC2F0?2zzXeM2!X&Qd`*#LZ0xF@$m9rtT*(mEei+?(+O?rRF zq%`B>BpbWy73o}1BdNV6IX}nK_3;W>L+q3qpuba_@a%7fH>V0T9Chg+2{e&vmgri| zioCH`X+h{|Y7W}ee=K}2EVL?xHQ%25H&v;(cZKqDeEIv6&b%-d_o?lRH*dFzoeg${KVRxI^5Zzqo6+Pz;=lOT~s-OU|?gH13S zOUv!rJt#V2!PVTH+-=_Bsf&xt6A}`aI)zW4;vc!wK6&!wGdHD!tE*(`^!Ut7&(+BW zM}mAi(LO&ve}77IoDUrbi;Aj}!^_RiGaHwS%gN0+ zazP*upBh{x!b{`a;MDUyAsU4eg_EvV$+FqY?f9Y;YKZCYE<01Bb90tg_7>cftXUI# zPT%~-KmrMPvHP<5Nyr7`rIaL$jTv@@$HBsXZptD$e^yfElg)o*Wf3zfQfNWJ%1`?yHtv#_O^q514h?uyyudiZ$ZhdD*&efGCicyK-?c12VyjNk=f_}NV zjBIRdwGBQHcL@}|kh}-wkEP4WIIT<*ZoNEOv9Pe96S?DSxmn|y_eOXXX^kV2tdwkC zzI=HyCa2`sO$|3|`+kR;-*R_7JZhd^UQQSze=FhPfyUl=$mh0r_3Yn2(M`9Oj!jd} zgimFkDGD_@of{OCBNM8sRP)pd*!<_m$H##tWY*OsprW6jZq+6vf~e6){y+Vq|1wHBC*R2TEXU&CSiX0y}_T zf7(rJ8JKV_oYgq@|w;2vCMff40xp1tXm2*Vj!oN}CfH({A{G{nC1;qa3~O zx4*N!JyW?+cz0``Nvx!#v_6y){Nu-uHR0Xsol^AAlLhLr4ZNUa20H?YXDdwPS{P&G z(u2R08+A*CJmp0OQ=kw3TkEjG#LnKixagai=_w{AmS0jLmNoiOTRS8-m+bEDfBoh4 zbrcX+IXP?~Qt|SV+?41b)gA2ZL1RL0YW}sp&OplEoC>B?NVo}YLMlbEJ71Ma=&)6( z?*0x6<2EvCd9=wv-r!MEJ=qgT94K_TbP@{%!h1HSp=qWIxBz5>5okPGbF#9sgtDA8w*P2e~`<6tm5MG8!O?W%d5RnELs(hvPJ_&%{zK~1JP-| zB2~@~9If>73AzdA?>SmcFN(>_!%Q;H-^I;cwKG3|{`c6$&Fwl*?X{s{J#Fz;=tHg8 z#4N~zzRJWhkX=zh#mkEiaE6MC>gX&*T0(*e3e}cppl668e3}G}GcqyZe~*kjk&%^c zwYC*BvIoOA=2S5-=&mp+c_9glGQNEsAyavB?dc6E8=OTX%R0m#bQ22#oZN@u3di8mp^tYLwHeucYG1J~rB z;}boQpUxl>UX(Xp9#2LzVypEaziQ4cf5s&VL-gaOdtuBZuAXc!e_p7KK9=}dp``;$ zpFG!(vF{4mi5GB@42OwJEbyr<5E(^-N#zj6MVvhuYuBPKs-AqOJFl#(>mj;wP;C3v z%8J>+L5f1O`Ql|D_(C3@i^iOer<)wdC)ge~g*iF((>5J5nHq)uHYEI3R^9q?_#a@h zL7Zx$^)l($qixHbe}&hLVxQ#)258dK1l=%WV%EGYcXE11Qr zeqR@jjm`E6={mqSVxUi#m!F^ml41EP<=^L!ryR!+%~gGc)$<@<0WIbCnoD zb87vCZ3bXFe;$xaSLoB>Y&o)8(6WKSwYtSs&m>H8{-@kZJSv=pcMzMps!yJ0|SGO!IXY>*37}dVdY^qVX&yE zsKK@$2KEas*oeug#J5j-hD78X9OxVz(BF{b0CfPV114&VV+1j#0m+E;^Sc&Ns3MvU zi;oXQiVboG!Ivo3&|%1NO*Yro)RZ$cMA0q|e>OqcS&LFrU?2uLnaoEB48`=yZc$8c ze%7}~*RNs|6N74Mc-7U_jg5^X;^O=@3bXU_0{;AY0T}P{upQdV0*(Ql`?s;d`?rY( z))jtXI-b+;&5m(iA@NDqADJ%;Lw&SXHkhM#9v1fvM&wr2Y~m6wY(Adup9&`}K_-YA ze_N3TWY8U;WX%+5RnAnHV4IkjtgfwrPn0q@f8~!)%fP}CGBKg{x4pf$zrWp@$H>M; zL0^AS+6^+Gny;ppYJ>BFTgpnu(D@DdY0B$vOb&8KKan7t`57Mh^N|nuE*_po%OyK+ z@w*LQ8Td4zr<4TNImIpi3YcnZQ(9J2LLd;}eH|szzcdni26x3*-|f7GH0Dfr_~ zPhYGL8_2$Id&$W)et4YN3heWP9qu*mXg8uFAu)OMSb;%U7?ZselTWbWGfz@^P0hyN zUrsEa%ATO3O9cgEvs@$=sJ#ZdrvMBBNXLwll2~9+$EYwD)C0s{GC$#NzYggBL z(1xRvQ+Z{j(f!?RBVxaSMF%=?tn2K|O~$U@vACEj3^{+}b$zOce?WWm2yhgO$+uDt zqD|^2Pgci9J}PNxVNy`!1Hd!1vXau!K=bytVb)9GkLoJYasn#V4%(~t-OK)yt1JF* zK|ucjLi7!#&=M081{N1n-`^e}fbmN8*fvp24xndbOakf7pnyd$D2V-L+!dw;gJ)+; z=%IOdc?shSpAwWde;#9csu-YQw?V*|^;gSLkGbYyPVd zjB;f>SIG=O-Jk62f7{zZ`lTCdaR%!@@I_jUIlsIi=kqvye-%v1x_wfPizfU)(EfN{ zorAnJxaFcZhoqTVaZba+a5`b(6hA+-ii(P_%Ylrw_jibgD=FuziAzZlQ&SH%dm#=_ zPTGOKDv91kYwElI3JSuaqNctYwDWGa^FhGqu7m^2-=j34M)iuTs=^$7r>1y*{`~2< zttMnz83DGl+_(ZsPEJ3Big=DQpTA)cqBq9c}i7S`6SqoaXk zWl*J&`^)a9wG9vzWo1*X*f)ZL{S~E((;<>ZaGSGI5OMr(xKDX>kLIOly(YF0d3jd@ z@eX<|KKS6Wz!oKiK0R2T(m~vzz3i}Oe$`{LP=A24e>Jy+j7(8%U_U#ra0Q$ zO(|njQ^$)1H>cxO859&0&{Uw-_ZKbqDd@DG1W%tn6}i80`u^hw^5N0Z*0h6-wRPRe z5W4%4FCzv{@}pM3a9t&Ow1y@o66)$CwzjrZ0?q-TilNrC-+|5pn|9&863WZ6M;iBpP#?pX`V|GKSVLpJVM;pPt;}}84cPlnfDEmssM2j>GQ;M`_|5MTeov>I z+HrS$hp@>(x}9E=THEaLL3kD_yfih6gSNQmOH}gtoEVB>d;UoiW~9@JYyE=k27(r2 zFF)K|QyH$*uBmk?VlXO>=;uJyjNPwpAm}1Pol<2Msmq4%7N8A}X3zTg$gT zkTBj2|4zPRtTJzc#uYtXei@`)3{AFBO5&*;MnLa{UA9AzFFs&!@Od<)3LZ2PgBpg~ zf50R^eE6~Uu%L;~V>8#0z-1;7V{!+a%BYtr?zX}GwWz13+Qj6f^L5swfZKI*Mn?0n z*YV*Yuv2L!D_x;#YHFXZE1fnJ`}+E%Wo4IJ?r%#?5cE=EA5~R4 zL0w-Zgq;5anOH#o?o9a)g(Mzio3_iif0moh<7CC$c5`k}d#)PA+MSC{5aco_w9A;& z#gdVOBV+s`G&D4YX2&vB-VFs6)xy?R61ZXlg3ninc5lc>cFsU@f3~wz0%mcpgRPmf|MT<4;S|n7Q!hj}ePO zv*|l8OZ@G>f5m{j`p;T-4G-h{`1tI%+*452(|xz`lAe?1k}DADb1#}|dDhwEu+eQ!&b%G%0~)@H|}x%pn& ze4X4)d(VUv7#R43gv4Q7LDL&Uzt*0vy1JT5&=m(XA0E3!p(R+`?jCi6m+i@VjL_ZX z$vc>hbA#)i;n*J;adC0yxuMzF1ek3@XhFeikcaK6O2VDMw4qPXX0Q-#e~JZoJGi;6 z&6I;w+VY@)H(#El-G?+lrq^W0#}uPdQs8Ub`hbac7aCBlc9;)f`{9*lN+-iU&Aoxd z4njAFS!x;@zths-Yfu1W#%p~sjhD;8tu_6W7n8YZ&1MNnMmELUu9Fo2tA9r+*$)fr zjBXj4TU);n6}=C7H*Hzne|WuJm@Ev51!;ZOASzb(@B@ctN<#xAm+s%tFm>yq$bzGt ztJM9?M%t$)4`D?`wjTn`X$B~5ZK}0rQ-XZ<0>HM}`xS|1V$Y_qPOUSN3mMutC);bejOk2?x3F4d#ML&KY|2cQ8* z7dAFlb-%5UlMUkYf4O6!_5QlXv$%)~v6+Pl8kxMUt#mRk93>!m3qQUE0W0k*tCk$U z_4l)ZdD~oRXRF}$-kUhsM7}%71>>}~wjQtq#xh{cxrcd{^+&cA|4v2*Q%U6Ng(zZnSfB|rIwmF}%BdMHxS?5AR{I%3?g{-|Fhmw$Dq;oxzXL z&|G!I^O+SDf9JeyMCbSf<;uw(d=#R$yE`pD9!gOLViwO~M76ls{L{}*^;5immJy8c zP$F1k=^sZJ7zRKh95mpMiobez98GGbMI|J3`Qhq}?C5|Vr`7CERB}0==%y5BKRq2@LeJw^+|Yf3qc~OA)#-3LFp9!Nm6MN#3Z$ zxicF!v8w*QzVw2E?}>@8J-rwmcW0(SnmC+p(jA|$XG~how)ltwE&2W(1ti_!;bD4t zd1O%$OL{R+U6#=WaX2b|*8jH`pvzCy#6%%YgB}|T3-uc6nDFDr$v4Ex($f6Kh@l=s)PawXkdk% zsxg&#VVrE`rtP0zRt~$SI_w_M_MC22LM|=pNuO{hn5Es4AhjU$THMH{$(5AY3ksQ8 zN$^4?>Hqz!G&eU-FFSk=BnR|Nkljks(ip0_e~Q^LeGXtVqPR{up3$#x1Iu_j zf5*tnOIFNd|5f0{PXfb<$al1;rygD{X6Ml2QI=rVfPY-^u&IKAg0BE}{VE}1x=t@f zy1(`G%(Cd#mKh)b4a;n4aulIC!R8PLEyGtQ8`;MB1RtbP^e{MHq1M?HS5-xKbcpx$ z_vaTE@159K{rcrjj)T_!M}@AVrX=tke>*E{W^*%MQ}bhBm_cI#(H@<%eD=zmQ_#)( zdu}e7zCJMqCg$4TUr>mVmlq?^(}uW_5e!aFmH&Z$K7f?V%VL?C>#BNsnBNqqNM2l8lnef_<=JClbOc1Fg(%`=bwau{=`I|KpBMjl{tMh4-`f9&j; zl|^TU@te)^@^b1(qu_G0XEnupi%m~Km2z@&+S}VNjb+QldTd->T>%pknc{UGWTd52 zSm(U;H(+sn$^d{8{la61&{_tRru1jwCmUQ~$aE|$-~0NofXHFs;Lw3#B_!m7NmJF* zQk0f{Wj6E&)uzU7azag6RaN3Yf54861RR?$u;RcwqQ^=+PfSWGs~nF=^9ii4r|hrq znbxa`7#6+95EK+N9SB%%^%b6&n)(#xb-rss`Shv1t1BHdbGu_>VqyUes$TARWJ-#H zlM~m=moN27h~9oYXhvv;(cC7c-K=)fS*gC7erK!G0A2)bKlT6@4HfMNe{$=wZ%wvD z_u3qdohge#vO%57J~NqS_glhEq}MT&=>B&8ry8aD!vHfoLwOg)zFx8z8uB=<_IRJ~ z!2*G40%`&{UaZjNB|AHM<*c}u7wZV=BIIJfb#U-Uafyo!s_n(waVzJF)QQKt_%hudc4>Hhv9TT4IXrzV?6tCp=znQ&Uv* zJ18iJ&5FCDo7S)|+MX%nwKy3_!xm3EKUZKOunukB*1VJ}={Dxff6yq@YW(^VNiu7c z^T~|ucuoV0fs|Cuq@tbAc>P)|tdvg?g4nZh6LN)Q*Pd_8g-@$y*SZoC5(<}eJt29U zM!{9GQ=QU(b@kZs{#NwGix<&nI~!*Z9|xOw9vd_z;j?D|LrCAh*EDlXN;7x{g*x&} z2bAa%`!3SP!D(FGf8z~GL?yWD>(7dAS^nJCov(x%XV;d9++aBH>*(MDH}EHy(V!YQ zbZ4c9VtZy`kz2b{;;&V+FG#;YLiY$D$SZ9}KA(xom59^a0&p3|AFW^4R&CTAs zvr#jpUO?DBe>Hw3ahpFHi8$Ms)HE@gf?}9j2*p{Y8Mv=*w1;c(I7!qM_NR zpF@|Da*JiD`_coehC=_gwRw;1c6!#0+2Y>j!fE{h#9EPEJgysi>>BfpVO*K#m^m0Af?Et>Esy zCGBQ1;N=TyE{Z3DLtdZwrTlVM9 z>LF}e zneg-HBW-PMX$1unfZzaU~qBNM81`!d5kGHmR-PdB$9EOFn?D9vWqoah* ze`l1mDps!}_xs|_Y`k1h^r#2{d?m1pNhr|O!)J~(PdM)Z##FBsfy79JmC z4Va$9e>#8}Q>Mfjb=6NB_)r6nK=XA8na2C_%YNMk&ENL+x{F1K`$meJK&VDF43riy z7CZnjL!R=69UnUay3fzgZ?opf8a01dv8mfBX{hJR{D_6=Jerj)7w2>`e~6k!<#z4N zsi-*g2o0*IXl`SZos)y6sW~mOXU9#+nz0zET`XCwp$forw$dzt$A+@5uI|y}$B{`% z!P><+AdX<>tZi%@oSZ-~Y7BhgnuCK1FBo%|mY3)DUcEN}T|Rx9_sg3qR@QpA1H4#P z9o$wq_9k&XJ=K=E!Xg&4fBU=JM~{Bu)haE>$neW}da_`XvQQsGOSKq?eJetZZ&dgLZ|EPh$+uDKcnj9%oZfP-r|E5^TIZhZSj6`tduhM?^)ncLWl1kmG=U ze%x@TwmJVDI;*d1I=EDS4>P9b#)1wo90whR5J~3?3UGu#X2>P z`?{1qH%8Y;K2P=Jf25_Cc1l~&TIaMCK7U^N2IEW^h#zD)-@lFULWrz(1gZ+1476L% zIGgkQwm8rn7*Um{?g&O>SP^13?7^1=%|}(ev{s zXjPg<#>RHx`&@qb{^JJ_9?e&5Z0o`7bA2e9>M@z)Tha=`lQ#D+52ZvO`rUZWAiW0D zP*)cz$nBz{f1dWUV^|O0TmV4Um*~u z^W9ln_$6TMnt#PA`QUx=@(dskIg$ne76ZQxzTCz{zAAXNv8icv%ee{))wV6RJh19+ z#wD?`dfGn?g}Q#ynmsLZvBQZUwDD5QSNo&`t8hPAe;7!r`I#kkVaQX+vR6}8^-*7c z=qDy|UO_>}Ea# zO{;X?^600KmJ1$o6#hD0asuY5!npUh?FXG=e~k-^rk(Sh?O;+?l-BX_D3A_p{tX9B z7yA7oZEfS9TJFL`ZdSc6ZVzh8jJmsP8z2>)SBdX&>keQSG_$i>EC$ViWo28ja03+; z6kJ?f(4tRz=-H9&cW3BAx-@|I0HTE6(<7ZxRYjgsl7QGpAR{ggOeYHtj%Uq$+K25_ ze{u;Zu=4YBFSnF@q>NYR>1^DJj?Yqh{>Xe0wyktByCDfDAxUs>LRIj$Ahwz+`qy%Q z%WgGYvLGjnt04l5Uae~SP9eXgyeQ(j{SdGB^}o5JseCe=NZ zK}F7o>2v>XY>bG5GW7EDQfp|WsMrRG9H22!R$jC@2ZecgS48XW#{IFZMcUO^f50{^ zdLwL3uc7=TOiWC|-b=Tm;ojWoD|HQ!u)x6hOtT;iXJ%$T$JJ+%k&&xwYY);~TKb?d z4-0_9X-d}CEW`}*t&5AP6&0LQMOxzrD^wzl4?F0pw8?);DTwc=9 ztUP$_`8u5MKXN}C8GUeYKn7j$VHt05Fe)cU@?ot8H1xnUgLgHz=1BqTeYt7geL!SD zr})>)n6_#riqOh^ckoqE(`R?~gvqY?3gUhE!_41Vqqf(Wa;(pZe<3PxU_c%um^)&x zCNMCN4uAxRF2HlpK3m(`d_VZ(0T1OnYW^qvS<)WNfVx5i2eftueXp}=@=!@frxPI6 z)R6OCvFwU3x7UNh`-1Ub?tI5~bV{x{ei1CF%BTDL`$xsabzdH>@Y^pT0ZaRhTF`ar z-@o@78l=_L)j(Q-f2GMUE$wb=%O2iKl4mF?E@omGXkS=}YHcOh-nR4|ih(07ui$f7 zsE`A{o~QO&o`GILA#@j36Fj9s@6nXHzRm!~;9zh6Cok{Y_wPb|{c`b~CY1mAL1>N! zaRQp}5xD=`+LDowcntV@Y1rqEi@oKh!Xycx?CSdZ>Bcn1e>>ZKiT+1b8Qf|g_V;Yw z!wweVa9VH!?tmjf9@yYf0Hpe*-Mzh-F|xnfKBre##{k3ZT<=G>)&8-tsHnjSvhc2=QW# zlZ6AQLdo{le_*vJwgtT#i=q4BUXeq~o_JPkEL?3u= z?9=VFe@x^w!K0vH0woomz{e5r{kty6vXDMm2QIUre}Ba_`rV)3obom3oR*XmI@d?; z|03T38IOx=b5GYi2}>|Rh!@;ZoAC|(X2U-jZSC&%`81azESNYpw*JMUp)@mV8s}>M zTZZ%1bCv}?QCeIaKd26liRtN*7uSYDz95!$s_F>mc$RS~xz5-j-6$%$B58JiDW+G5=FcbZQis7)cEuE?~s_Dl)p z!_&t48cv&;H{2KV*mQoenJ8Y%9f4l2BLy6mXE2UkpYkqpjp>nd!0)}Mqo^AaFY~w) ze-bPJxjYz2w-yMypsT06j11k-kha)|b|7eV+h5pzk~cje*%X@A$}wjb~Fk^N#&{u{w1`M25hhzI?g%;{E%mcwppF(a*~~uP7fj^SHQVXK!mOvFSHT z+uI*bUMfHN*L1PC40KoMxM#e{j-@2X>WjGHv#wCoox)SLsX45*HB>mf)8w<2efxq!bmE9$8RGe_OF@y`CVSqu(R9Y(JqFE zhT@u5&OQu)Be*14#OpffU3jR?)4xwN`+B5J5a*(isj1w5vbBE^h~cCu6K>**T<&4L zr}ihEE}CskeEYQCv!oQbs-5Z5f0pH=Y&p%)1g(9|q~PGEg&Lg?qnavBn?AUelMOOA z&!hEA4ZM?;m2K^p6RE{=U?nHnN~!_P z8WuXi0h|pN5cWRZROYdn6W7my!zq ze9&S3)yqfUEShej!_Ke-<=v{J(#5&cDE((|8`vB~|53@31oOX;n>o?SCnLoTAvR zY2fA3xdJQ%FK8O%&ha(F8(YLtm>v}TLO}3EZ~oy63ZJ*4;-^pVB#8QK-YZo@p<{D% z;gba&d4KZWDapyLYqr!+?6|tS*Uh_3hkGn2hS*SV=*lN>{%Sbbe{b3xsdY&8vUM8G z?DRZ5|L)KoSJ4zjsSoWj{p;&%YyXy)|1Nh1Lxf$OPdUN35JKlOT!6UcayQQRV7)^r zX#kW*%uA9h%RaZMe=Yjl6LiCU;(n2kc&=|qS>e;Z10grJ-Pg5RTJ4Pj9qGaKTNx}Y zEYy8HBBG$!x>;kVJ*~ez@VV!t3>7x;ikaDg8lI}Cr4Ppw_BLId-=RTPrFFwAmw$0m z37)@w=*<0&z}&LV%(}FUB^DR6rg=fLx_RzTbKxqV;=7H)e}$)Wc@Ui8OOaBxj6$9a z(*`YgW*bm%XE$h#+rgru9I}DcR7q1zwUyn&?l+K`8$*I#c?K2aF>S5d!~3EkfF1q( z0kH&iPZ#S*iHkof)VvU}17_q$pDZ)z=d8&o)hVgixS`KjtOb&I;p1xsArcZ-9Ub$3 z8{L&>^c#Czf12hc8w@+Kf`WqsLvGH0PkLP}bOS;8dcBnk(YqS$>H=_zq^*tPr7c{Z zlM_^5U$0+7oRyS`qNfXMzTQ4jB$;5-?Ri)wS5sHF@1};+Gcx*@mF>q}bCZ`)Io@n$ z`8W%#^!4%&OVQfoHaCaG$G>fYCPYOUT?ue-`0nmIs}hr0>02( z#7O(!=NQ;K-l^Zi!$sNH2q*;zuisDtF!7C2-3SbMSf7##qiXB!_K%2&(1&dfdu;;q zm|lL=e@BSJ0hLb2?tGYJL3rKx@$J=#Sv=JnXu*zW$^Y zRn%~MVrv%;Z{gY5wtUz>SyC%v$4#kKvFbtjbjLRl`Aqec1@w4efSGC1IE>KH@u)V> zLM|+s+1Q$wIRH(#?#^&*U%!?NFC^N0=m+oKf4#xQJ>!1+mWYrrFeQZ=aM1%x*0`nD z)X;1Qo-_-!@^ zqf%<$YHyR$o1O4%Ie+h3#FWkf(j~)4=Oj-oiX+RJx~`Yz%MmV4mAsOYKiLxgm6fp| zelOFL_7oWY=iCuF3gUH{tskB+xJepM9f)Zpa}R+ISQH+j`Ci6v(mGaPfY-ZTP=4&13e{+@6_T5B(5%jsKqv&O;eBq>EWtNznoaFrS zogEX?pNXBlt-n913F5Z2zK-nKfOcN%uo4(7__;1;ra5#rS;EU}Fa3ITWhFd!PCL<{?n~}oKJ>^LWuJ{!<{Kc*6=gu`+bAEW3uzztBP(Of4I-R zO^77@!*+;+>;|h%VLhFL&FPlKuA8e-;4ILVN_}pvYGAVQ*mU(y>L|CslTNO!tlRC= zHhGfgH@q!_;dYkgHZ(Ae)^-a?+B81tKAkS?9tE!uB=bB_FECqI`@->4|6oFO5VprBN|MK7<6c|%D$=b z@$YPGWJ+Nvf^K1hNwhJOQzdjUF>f1B6c1_=Qbc{idZQpM5R_-kJDzEC1O5F6st{LK z%I3@EX9)>S=n&PY5+xfff4UOtAgt4X0BNZ0-Yw4d;lFls?l8>^DZ{GT+wslBd#UP2t)%*4w2oRyVOwB_CI9yJEe zZgbyMZiHTw2rH<{n z_VzNGTU&oVT3)pBzy{y!x24z-7S?fILBXH8y1@DQ;D?QAK|!2U)G2(Bb8axN59IXa z%eaiJ?B}kKSG&91!cg~hc>#cYfUJ6lL_U1_^oWUx5m?}?#zq|A{DF*SW@ON$l+-Et zrY0mjn1JkTi9dgme_uR*{=2po)tviWT!QtPh)C?=p;mMZ373yIw`rvoRwxD?3)+*- z|GFn)19)I8q}!$5^!4jL46HcglQ|$fTq0W~W4eZbl2Xxff13#fl~Gw=KS&?`_jt|9 z?=;TQG8D3oghbB&uos}Xu&_{~(1l{l7AJpmbLZ&%+z8&Rr=}Ji6&>CBN9GH-y0K}_ z*vLmINlDJ}+~M_|(iY>vL|kF0nccwypz*ox5{QU+cXW4y-sqo{gbs`hz$aA$1Ap1a zVPT3BlV|$8e{KKSQ1LKM>~8>TlSO^}+)rX7K)SiRV|sXDg9N4$I3)p6)z;T%iQz3M zhVhd8W4a(;m7Y)Ye*Le;>+N9>-$#!Xy8gRS6By&e6YPgf_^%%~;?LrDKYj&F<-~*< zAvyVX#p#fS2K2XY)xmSE^T*QC0i9D*vA|%0&oBgWf5oGkX$RB6=Y4|#E-s9x5afFW zT3(q^w^XcpUsrvYRYj>b32JL7ukE{H4V`VO(+g`}pr}aLWNfI<-q`=nE}ks3qftxR z^LjK>djyFeTvyy<)vnSV8u~?`Nq!mu`84C)Kkc-^#_)3O(SNr?4w!QN*C6*(D1f-k zF9^#he+Wzb_qQ2rvZ0L0`rmPJMzdsd40Y81ca{##zV!_VUGQ(ZjoBf^?&T z-jg$Pk|9>8)jb$daVDGz_8VKu^B}j zp(WAq)b`UbE^iS!sH&LQZdgqc|A_$7%`K|no*6e~DY=MlrRj&rBN94ORpvT#~19aQ)m z%f7O+HSKh@&;|i8xUgKaY3z8MYP|-L)qZx-)x&?Kez%|Yvc!YQN}q||6V=Q+3IdN3 z8~Kcu_TIZ@Yh`7)=|ZFrunW_xp3b>Bf3&oF_+pBblolL9b^p`20tZtIQwQS_$_s*^ zzENz_j~G)uZ(Rw?J`td5R7Jneu*6)PQ;aT5u&&3pZQHZPwz0;xZGB_g#v0qUZQHgz zbN-W^eR0l3C*7%}(ifFZbyYp@jcT)X)`LGA*fF$y7YAAWh!udGP=Md_ zv;BGfXld!>Je8OMy!0lG5mva#&fc1CBOdhBZ3}!kbxER}^z7EaRDgW_NL4@mX)HK$Y zdQao|N~{gf`6ah)?3c0WCkUXO?=WO#fG12s)0nv{)|*)_+L2B-6J}Y!_k-7`p;x6f z+(z(Bwr2s^LRC?9c&fhuTzb5|MyZagamMnnS$hnw$E#b z{{Wi4i*HqopW^=c&=%bA7ZIIl33c0@n^=S3=BD?lyY|B=EreJ8(FuT-C7KY|c577?IND0F);)PVfB#B(sAZ>P_S$fYQ)@$3gj6FVesRHUMt;dIH?cvm!99m- zihvNa&W9=yklfu~P`*Y-?K8Qv>&Ej55C6$%o4`1jvRitecXqWrsP3&2%mn6tqrhEk z-Ybc`M5l(*J>A`dMF61Y6b4xTIPyAG@?@(GAAVprD^{OC0=n9yq)*y@zF=mGIz<3q zXTiZ&u?UAHS;p(&dwr&+t*s-jVPd!Y<*pHTk2M1eCr^S0NfE+wL7SVP8@yDiiRq4x z-&2D&R2vT;E^ak9M>? z7UAqhJ4P654Y@Q~UlIBIqxzrreVzD9(UGayS_aZZZABekty4CxRj~V87%9o#F0?cx z%w7!Tg=KcSDoc_gIogZ!aok*($V)tHHS%&zYwDFZ0UVzy!e*JD$ACkc)^l=D3f48!dlG19!+}9H|L7Z1?J%pO9r2fCEe<)4e zjVh*)=9SuYa{JEl5@MrSk@;EG>3^HBW*w!D)(e%?qs;uiwX%YY_g4~{ymVh2&7$KLM|VgY*EJUtf3bq$$;cAxV}smzRK z)tY+pa0bKd5Q;8otvhR@C*x0v4(N;^3fdd0Hd7qv3OMGXPU^4=R z>gp<{=(c<Z%+2mgK zu$u#AdgZQty8OaUh_ww4hIX6D`x~mSE^_3&U_g9)lg8=4A1=PDSbKQgCl)x^EHx2N z)#RfK1QZiP{y-?z{FuwL3lPh17Nwy|J(gq^o`6XkZxVgin)OQHxJX8PHUYKmjksdD z(}>GK%i=x|QWWrQX&M?@U4%>qn9Qu_ASq3Hxg)j18Sd~wcaq|pBmTE6oa`)LKAXa_ zUBE;FH5Ep#UTU0*x_a##gWvQ>$^P{<{#0>@1noauZ0z&;6nys%ZOseEf9EC752loV zL{3XG;K~1V>*6GrS!Iq@zkvLZ5a%WnND7(Caf%J=wC`F$KxjULI9SvR2Oc64eGR*} z9_nqhPeBW-|0~vC44hwA2H$p>Wq|Ng*$2>PPyJJ{M3c{bYPXFsrF_^Z)_NrK%tOa{ z(o)kVpm+btd#QZRgKmja;HBacqmmM9jpyA~Dj+B0COS?YjGq{sisXuk(Uw+~M95$n z#aq#mcaDTAKN8=_lPI<3 zjuj;4V0E1W<3@@!N>l^5{;SbBlFIiLdK0wYm%nF1I~9{Tm%g{#a5C1?OaV4v%-4i4 z?;cPuWP0Bav23ruLxzZMj;@Z(*kDo~8B|&q@DP&n`1@nmEZr_U;dY#vBV%#H`CE;{ zwj-uEX^j)3prOZiDVf!JjlCA{>lX_&Iym|lI~tgDl4JB-3GUOHHiCL1Sr2{4@Jj)4 z7UTWeJm*GPwQ#u_c38(BD1g`N%~hcEa~}yMKR;7T%W`pYc_|^o;OP9?T3#nj{so1u zhAk@-o2~GCLUadl<+!hPa7G&WZfDBi$9BebVMC+Ht+E|m&|Q3hQ-9)tCX^33aV>WasaAzI0wCK!x+V_YW8nLY_Z2EY`ZRoEzLc%_Ct6sp#)&$bJko;WHs-Ep143l53RDtH0`SXrmKVUdnNGeIwrb(6+RI#3Q zr%+B1|L0FQ;ODW_Dh%bhn&Sc7wJKrA&NxD5B5!nU^*<7?TfWPM8khEJH`aHhxYOC3 zMOAuOM%>&UGfG~UvD|1kh&=Kd+!;;*M{ag|G>qo~h)jEa=sNwfxs>ZtxDaEcVC(Da z%`Lst8=Tcn9KamOGi|Xb7@l{oW!$}CbP^^CB2~=s&>SN&Qj=Oo3yw+5OujT0c3d9?$hno$pP@(vRrs!OcTy zpUF>wp(}8==^SfjCLfzM%wQ4NdS0LIk|ulP3-KarUke;E^iOm`%WY!pjQ4ZqG#V=- zU6DiZ3ZQS*>-`F+dN&-RKc*$nJ)uFr@@MVp;jOhi-W~C1WCNK(5Dpz3JwW+bc|>s) zcXHA>dl-D@Y2bdJ{}=Ty83OkBFj|bm+qW-{?YvPbr%|q@YU@GK=5Q2hIUx~CmW{Gz zHy_`~r?e-jt}2Y_%35#!(e-9enLg}{{48AnHUQ~zl${tY2f=E~eSZ7u^YFwmS+vR^ zw+)$1jnIdX?MKmPW@ABB0OAtve9oA$X&HieP`#9a>XM~W!th=m28VKvP|X(E1@C;e zG_-xY)rKL4EwN1pF6Rn3h!4_&j6Z)Pbhe!Jz>ME=isxenofGu=Q2rQJ|7?sf#bs)2 z7~ppQ4?4_S2ZTvrM}~L=Fuq?(XcCVvG7nup&AN$I$3c)m`-W5Wb=mwp!h+h_63Gfn zU5etnlu8yxgp0_x{*Wb;i9D40m!kWvfa4N&Mn~A=pV(cnKy#ap^b^<1zSRb~`zsGm zbMrPYuNgQdSRmEhDp4Y}-jlU5_KZ27D+6Em(wP+Zx>sYcCiPux+yV7&>ffVdQKaU;ERWtEi7&~W96M@HS& z;3hzhzIDu@QhM(ObLM`mdn3MYQR$s-<&=CrzA3Vew*9dSeRTWT{ygF z1%Vr+k1z#PdCNl^76OsM8M$%_yNSD>+mz=q;SJd4%`mOe+5`3$3EBSOd4SA;HPB(F z?q-jbpC-&Z*@(yu30vA6X5;0c$l-(kU{Xz*Mt?hyfbQn#%x*Y@_V&(O+kdx=N5H1Q zB@0_qRTVwdIU%~vJeO>Fj&oV|oPThz?-M!ghP+9f%S6d9h9%eb3 zN7V!|tEa1+MFNzDK>zLf9xR@bhO0@}>v@X6;jea1GxY*~*PlLLcbC|Zzy0#*=--=P zR%_a^|H#~8gDknt6hwIN{c)z{DL7hOX7dvWff3@m&YT$Q=n>^m_yTANs9?lHuO~Is zf$MnF7`;%^^AV{$?}8y3A*8dcXw6@oaquop{I+C29N*oM=z^XTyWg3r_@9O}a({KW zU4j>tns=S%i++)omm@$v1>({AF1yIbfTXp<(>?aJQi!d{F}v8`)~nF>%wWtWgI!6` z@Vy-nWgme%S9vNaFaczw#QKOoDyTAO)oakQJ=Z=M8Yp3OvR+;5kF4g%tPDX$+SYw} zInBSnO!A@@5+~iN-J13ie)jG{1@kj(3X+>7;^_5_k=uuP*V;|Y6vKr0y`~dvOrDrI zZ_mp6`UGdGKlaLc*`s+Pb)JW9Z;Oh6pQbcSXsS9o_&7P;j{sF0IS5D@1UI1s-#B0i zzxZ%SWI%~kU{Z;Rt-*pOuXV&o)kQ|jp_Bmzs*dHg<^pk{gi730F6D>Vf zb}zzn>X9riRe&bHj*8^a1PO;Zk6U%$2aEv3{)>%n=s;EuW>48u>S~MePJXW%kz#6Dz>#9{~@6A5I+;}5XLh# zxjcZK?d89&By!}k&DNY?PK_H{BzQLH@|Z9fpDy2N3xM-3i~KD|q)n33s2C0nI>dy;Lq zlrKp5nlQ0heR7Ydah+V>b=0G7=R8+AE`#Y7O@L!8tE~xE$G^ADixMXfjE*boygja- z?0CSFOzIa;qyz?hPrta=L+d{M>p8W{o*PySKMSvOzZRO<0X36oh)NeYfI@2WtgxRf zX%gk}g`zeMx=^;sj#$8%f#)&@aPA;U*Ofs|HjgyMXLsWz*{&q9kY%!UKhi0;NMr?` zW(6FSRIy1Gv5;)N{R_cW&WnP6HRBk}EIuTX2Ij^M#~IM+0>F!pKxS^rfl0Yg7CNBK zgnZ*Hu@EI4Fm(_H+&YS4Wb<#d*I~-n$B3;ze>cHP(ON;(54i9HWJ$YGjJ$4#%on0nJ zjYQX5=mNzFp7}<_HOx>(k>!Xp5eI(oA~Jh2@84MvX(98UXm(s^Q6m=)&y8_3A=B;4q|j= zzwI8dc~7kaK{pDQA*0_ow?+35I0O(r^1b)E1GR`M_ptwOK>rn{;yp}C)TRQ+IcNPB z(68zqXY9f#P-NWcQ%&+4DhN`}Gga|6)*vIGPFYW@>IRPqvWI`H`Y;KiT{36N7cuNBXD1qOQ7fnQaWx<_X%S#((29U?A$cW|LpHh#Hlvq&&IOq(<_I%mSm7Dt4wr3Q#5MPiVs5>-5TBFl@xII9tmGSc+>>1(+0iaAL zfJ;&|)%HFDhztrq{xjVp}s}^ zbJ(J`9|7l)?z)+kzHfj`2ez4}g8Q?|_`r{Php`mF+M);Juivgo%g#Ak+-13X7H1(& z!k^*o@1-{IW{zG$LjFs?yZ zB^zzKs*7#AN){SZmFl?DtTtlxA7@cwS}=n0e9<`7H~qjE7{YOAlce>*mOFzaAyj64 z-aU@xbGb1lVVE8n`~xvGxRG-SY3Eg4deXNS?~I0d6);4XFlToN|3!ejyV_ijiIh3~ zoYcMu;p-{jy0UtYfA9f>#5Kvbr>0ZAWj|}E-E~{NX6B6K46rZD7J`&{rd+s`cqmT!o86JveMdwKEE@Vw_yne zw<`zTFvn`9(O_I!=a1L++TGe^%o6zqg@_w&ot8PRv)br>;d#yL0eR5F*@D%PdDEGH zonXM#@I7bm1IHA&+gQi}?ct*Nh!*WDs?*Trf+{U~LEX6NP{l;e|7Y;CUu|xwn zOa-_YGvJqdX9IhbE}*DG*^yfCqXvs}&_Tf0J6z_2iSpmR;Lt#TL<3R8rH6Io*Ft{F z68hb_m9mN@jYsylxc^IO`jtjYG#9&3rk~a)Mi2gu#YDW<<9$qFbq}861WLFq_0@s`$)Ewy>;$BbO0pW6t`mqxh z{~@aId_LcJrZ>q7*7IQ+mw#2%>JS(JAA9kbw9Hn6gDj%W_=dHo7MnbUy`mzpsJ(X1 zj5MlP1A^WaJ6bR|j*kwRm|!*XW5%VZDuN2i$WwDfOFbMQe-`SP0QnaWuYz}5^uQDb zS_iTb-tjT$%i>zS?8|t{>q1V2^1<2%w zAGOSjOYW0fR;eri52y%LJaxdgQUmWog{Y8k^}LLD(&vVV41_#+cmW9SZf@v>TRIWA z@y~m0@*E!k!KwT-or*d(dtMRhhQ5#_>=RxYLKAfE0sa11FQaMib~*wQ=xK2-3~%w3x&WZ z+9D88C@Vg^(2UL>8(;l2ne;ILhmU!GLtnyu6nT7-g}~*DmkvAoDq01%S+$nYlTnBM zYhz2;gO4W|7dZ?w$B;;C&aK@0jRTVVsk3fw{cfs2$d>2v_xI}aLGJ@xv8U_e@*MX) z zz~CuFl-oo}XV&CIk#vcI9}K5g0Z_cW-iz>eNxd5-yql3!OwB=2Q{Nz%N%S^&Ff97K zK$O>_Lk_-4DmHYmHzS_N$NQ0{?nK8)kv6zUeuCMuvrft$d#C%F!+u2cNzFE-N-Tlq zyxpgNE2Vva$=SB1RG8((QvYIcV&_4xITPJG6V--F(RL{{36(d+gqf?87y@tZ3tz4n z584aey|WU#C1MRWCisbiG0UwOk#l5)2dyPh+mi4_8hi^nV5t~env%PLQdyb+_nzwBO=1GdQOXk?Q9l#~Xh+BYXyH}l>V0E?vvRzXynDV4s7*&$5Nm8|! zMmPJ{3TL5+tiEk0es9AUcHuGeKm;7===v-HLfTUy4iw28x-uRFU2J|`By z_FN~E!rK07E};YQFwg&aZB!?b_E1GBc<}bjpqg1 zBtZd?T6;|Yr~t`$8;+@-lEhfH)1fM^;2^54v)wE22Bez?`W{SIH_{t2%Lhgu@@-J7 z9wd*e(uPJe;Qc!@uU65dz*BrD5fdh^v6kq&!^&=xWN~?c2Iu;JC>^EQ%@Z=GsFws*31yO1(MPzgp1q z1qjgcWsNLogx8@3!hy#Z$^1AY|J$v~tk-nMUg>#a!zv@0@{YC_Lkk3nkwd0GXH}0) zQonLYrnpr(b~M?t^Ri_{$Jr}7HXsBXo&C{IFpdObA(9*rpe+L7q@5HmoM^9VfxfYZ zQ|m;4IoXT#O4=gN2c5H91F6S@3lrBLGo$&d<+=j;E$z=ADhBUNbMiLyZ(yWu8iGuH zPd|5oZ`n`}IvF@!bZpAIt*TXM*Yy+Iiy6LA(^=SYl>O0j92Fkh0`DF@RJ#n&V2Bl0j94+j$35fD{q9Pz_MJ7_P&IXX|3FB zv;o3?wZLN8qI?P?B0__x9>x)W^*{k^My?H&dUQY_BKhB&4(K~X$z9v$fV}=oQg{ zRAQFxNrD;30iu`_CeHPlqLcm*L*{Qs1eO~BcfjzS^%8!Eli;$L{Waap*@#cY!-A=6 zl>}2rYVT8Xpw^)pGp+-Q|3LPxqHLt)oUz0rh+DZ%Y0Ot$A~>#=jDvm2ei+taXfpA; zv`INVLyl_$|2x)l0E`8QX_sigFTz}0&LKs+0s+*@;PLcrSkVEV?aQ=ET-asX$Ll%u z9>Dk^U-*&UJ}|7$sJE>{AmI;;r-yC-!c#uavE2)+WP(e?!8*cPwXqIuJMBo*E*UK- z{>wkWz}h*6*k0-Ro zjwi&?!5hT9*(c)$Km^9+QGW41QO{nfRYFLzCfMBVc9F(CWR(azFr6Cq?474WluG^H z_IJ^9@l)E{`m0n$_!Uc`-}J}Bgf4_bWYf}xROxW%QC+NMkyTwMu}G+n!>o1CJYDK1Yj&+S$a-QKJEQg zLo6z$fqwu-$)OYN{)jNyGs~P_KWFq_8B)7EnNrgp%YZjxPD@eFFuF9PGalU}KA!%G z-lnQ_6J(ovlfubmrD6m&*ZaE8rzB4#&!1FC$&8q2YwQVI>c^G;g!<(z>cSW+P>Am^ z3e9L$1I!vmJLjpsTyo0#287dR{u@?cBCIwmbmj#(1X)qBMRuqqH-}GRxt4r&?_-D5 zG-uh5a?~mAVJ0v8&m~uZcNLQa38jxsXp8)!_8b!Zpa=wiFAp0{D=9lxA+^(W2>_~o z45+qjQK)3a=OLoRYJ5F${-d;Yr4bw!{HWoep7<_+nvWidu$c#=bO>AIY| zK@R~alT^Qr#lW%glKT;XTi5xU<~4i#M!*JEVU>Z@1|(R(>bx<7V0=dSTgn7oh*Wn` z|ACY10Sr>dTOI4#0kWt9G)#KAIQ=Hkx~+fF=7OW4=_SX#8oFLsjBsJ8R=BW%6J{B{ zstcO1HYXM>Y=YxY`^zVmfc~0+;_^r$A{YT!4rA*`*Y@Im4?eor!34s`+DQEN#@W=+ zDGU(%y|5LO3c=dxP+(%s9=b+LnN%Y57Cp(e4B_+`45P`ImfHO}J5<1w(=ep;Bv^86 zh2AXb8lCg~HI2mMFDxI@nd*j5dBw#Jvrcxv^#y|NPo`;OL^uv{PXtoY`|7x1lQRHV z@l!&^a!KFpkQdQ)FB|bze<#I=h?$H%G+M*1irRYGnH5*shdFjQ6+PiiWjr*cf|ofv zf||W`#>LjDXdO#eUr@EZU8-nA%Oj5A{f09sv9}B=N+s*1{f(FlX76vZel!3I*K!A* z^GVFB3d3FD+uXW9bPUSaO%6O%dTwtSyE|cD){J;);?A+>zgN&EVm5+g$T!7eh`IVm6x zbw_kw0cz1TM4&1yP8|<3(R3gf;d5g=6QnUXw!uxZ72BJUwG*7QDbIH1%KAY1p~G8D zYK`?>*+tsc{fR`n^#=ShqwQQmf38;FVxFw4Ag{4-@>wOo7Rob%K)2WTkNhr}lBSVSiJ z5dI5fOCn=qLBM-H91nmxrZ0^2-K9kfW}M$?;JXK>V<6Kga4zsbn&Sm>4@maq#pcYR z+lP+re=dLSJw`ViWZn6Q>WQhK^+e8oFzW^ZGye$p8U{uWI<*Yo$X*5%WY1Kn^scBDI2rvu zQ8rePydr={=C(x=&O}`qL;Wf5_03LQ$W$x&@S2g`cbH$Zu!RZ< zcC7bDkl+t`>>o%5f6(0i04D3|TyI3IunO=#ZstQo*=B;UUj?(vtk z#r5Sv()m|*)<0c^En4jy*u|G_Ru+_+yw}2hp9?A%dx8t_Y}iPlswFQqJYawi_`|&t zUw|MWUC+@tw;aiP@AjjHd@SVjaJ0s3B~i0rw;I0XiZI3H^;)y6><$(;qd^;`u175j zxP|$HouzS4w>v-GG7~-|eipkAPnz>w+(B^8Vj(;VC8*F95>CL^<)`9${hz`t3T%d< zqxUmS5=R=qZvnQ_B)as8>ia*jfi>Al5+}+k*$V;S1Ozkz;My*2E1W*zy_%~wJ*6mV zP6&nt4FWbtan&jLQKzo0?m>*)3El=u&bg>#?Y1-z?5(7P@7VBs+zQzqetbej2}=q8 zdH7G>jx0TajIH|{Tny`(uO?EV{ZOBzFnlEd=T;QpZC@J;eD0GGQ%$aF2w&l-n|EeS z=7%-+^`eWfoHSZSUn|lQhv^2K-Igu+al`D~1XhaaE_k3!6&BJ=64dgxx=oOliV-l> zPrwT{@4sAW;!J4E=VKwq(bu1v1;N?@j0!i7%4hJt01;v~ZM!10{4LmZ`S1pT0^U~` zA1DWSYk~SAl%X3mnKb4pBt!Om?}>sg5XsvZaXm-aoV!;WILx6ZKZXxh@5$zl)*U?FSaAL!R$&^ zo0oZCa3pV!?(z3-}Z85vND{<4_i5L5@@FB{gQ(b7h zY0w0-+w4^NA;|rwwu{ptLhj!RE+w(y7_SVK#zjJjhAm~~l%3*ln-=om{jqEr6qE%B zF)#J_^p}CHKHr{GVpH@~Dj8kR(odxx>(cIyUFA66Veh4yUfa*nQ ztU&L_EDGxag{ILJ6e91R+r0vXH~7$wi+MVD0tXyGzTVSECQHO!i0U&Al&N5_`R&}# zg<#vd$h4|BY4R+#PI`Si=-bQ%OCRi4>+?~GA&g*HOUQ*;kmH?)x28@Q^Z6}stx1@&^7stfltZ1!jfW~=+{ClR`$oZ8{(t< zxg=V=_xtg`K#0|c|6zKr`L(!nV7zHR6? zU|%;00)wl`h;G^)mx$xH$djSHiFpbQ2p-an*q}U>P8l74lrNDdvVyS?NkzAUapab1M&-rL#LMwRxF`%qX8A+X2q%B!}^r z!=b~*AuOO7j)V1DkQ!ig}qOXakvCZwKDqUP}9|!VxxJje+?9Z~aE(h(j%|BdKzVUrOwPHBG@zc6b z!3iet)`%=^l6vz|2&v5b4l(6jrSZ2c2J{)IAY+%8B?E1WXyVWkZ2p zpA4mm@ZI`DMt>v(8Fu`2M6gvy%merom|OUA?DY7AF$xgD?EN?^wjVR!#|27p()>pc z1LhTr=B5R^#^X#>Plx{;3bgOE;XMNwo65D;SDmZn{GrJ4b?XF=H#Pnuz)i>i^DbMU z2~pp7AJJ2Go`HvfAGECb3>|B1+ND|*>-!IW7naU#n-pm+f1E^A`HSNegMsvatW4ta z1(eKdhfB7IeIEx1Hb=EeuZM1G4$7!*`fE3*c1<6gYB1b+ehsu*s!BK&jO!`@|DU9c z^9;e=TNpF-PaW1|QH(nmKzg8!ZiS`NB34inbS2Vyt**D>|@4_1w-@(e3qhYGU2lW(K(p2<-_&i)ydJ-y~n4EZB|@vHZVr$U%tbC5zu@q^FGkz^=VHz;#$>LWiGu0Wa<*MvLgx( zj&V?#g&chvmCvXL;3stxuQS)$T98$ySRgozvOkgL3cEDvk5;fE0aTQwOtw@T5L(E% z5jKc1DBaHKO_~2~gx~-MT?Vf55qEXTs=g~}L;VqUXUK=>K0+2EB*eFlZ2)5GkT#?f z!F!!@5rqkhQWzNb4>-{Q1CGdnH@ktnc!T55S?NmO6e8^guviz_0!=}z_#hMPOZ=)Y zNDxvs0($~L^Sa&wb`>RlYKvkk?6L%H^@00}yvVedmW9q75Fl>SFbwh@q|6;IGcRxJ zDr&PTy|!9dyO=T9P53vzDLD1{@7JaxuGgZEyVvNVjS-R+gavr4u>QDAmrknUVw$Z3ekeN7t@sMf8%@rOSXLqIFk35Ivhp!>4wow@-DA9}_%I4>e0pJ^cSD7PPZ>) z&et~p@as(cAh3IQ`)~*tC!~BBb$&0D9O$|~P58P8%;s(M(aZEULks-mE$ZjTs53U& z+aBN4GTw6RZjGJV+Y*1QK-BcK2izXm+a3UttONn*EX)tGHYSc;=fuY_F28>G;OFBI zEW6Q~t|VRKOYmsm=cVxgcD)M4ptL}!CRH-JO+0_feA>zU>XF?Vp~V#V6CmksTc9r} zQDhC<=aQWIKYeYM0eCHv<|wupXkW<1e+%m2|?G6ZZzQBbGEciYHG&?EN9!>Z*m}w?7pgC-E5XHi>V~Gl8I@ui1@ca zU))TGc01rTv*Tz7{Mt;n5>iJ+;^f61Qj4yFIOa(5^Km`iyv7^(JX~x(xZSze@6b&w zpT~FO!9xyP>Fv;|v z%@%$Q_xaVcwZ@UA{<=E(Ja4am0ue^OuVf2&aaH_uV;RgM80qYwpI9AV5V_Sa??%4Q zR45%gwbYsWemuQ3Nu2t0_0oo#SG289M~#;LD5Xw5uKQ@$gqa`C_djDyZeJTcyLNQC zr8x^Yl}>Cr{kSUfZCqv}Fsiu&j=gxQNYiiKPO{EJxbfxJ=6Z_Ie=D}=bj*@mOjsx6 z0#WVq8m5kmt6!abRj{h*CbI(%FAnOk{?fVcW~W}@o(z$N8Le!_C=Fa~!s>L8uSoM9 zOj*cM0p0N6>TIjE%OIP}PwR&2rnQneA>OvXBqu zc^#dNbT}Tsauq>8X=0URVm+;6wOppuU8A+!rqtb|wLGTOJ)^a}rqsRRXnF*%$PjqC zAl<-Po3ORTBkRTHz{E@d{M@{6hjXN)1rp-IanZp9*wB0|C|)LHPh*m22?=wg#sv~1 z{~1CFu;KYwaJ)>|p2jTB5)=Xm^a@9()V%8`W$3(vg%r%p%_H`xyhg$x0eD`jWKU(1 zXG#fkg(L+MV#0Be!35~gd^9Lts&r3f8fQxLbA|u@Gl;}Rh5`uC;rTA8=UDCL7Ogjo zPr2!2uBt`_EwYcPyc!0B1Q7VRQM_Epp3WrC=Ku5e-!&zK<6?se@S*v*F}z&pp3W@J z=Ku3o_@6-}E;f_^KbD||Blu8?N;EP5`V>GF!bb-tsO5!Te8_6{Y-8NcxB+3~zsq|MnHBbH~g zdigp~(y7%eA>q#Pe!f62vdG8By<2^fvd69QN%;v#E*;wf)(WvQ&E8~F7%?;1{KlXQ zFvDTkRb+Kke(Bxs2m8+hfd=O_Qa7}?R8&d3_!;FhlX`bUreG(jZ~uqQ^X@mZGsCR zOfD&q4rnb?+Gu?MTco;Pe-AL+QO*pb5$mA7-2Aw=!_oOz6TIGhzfYJ5 z45N8s;571n@jLUijDokX&}h6^|1EGYq33AR6-xQpv-FM}-UNcZ21Q}^ht2@ObN3HC z03x@l9LL%t(5IK|(ISzfB@XgGl#>A{W~L5hstHp7zp~K_S!to*f|y`9Z0SNrb|!|` z%a2j*wKZa(nbRXv#>aE@IZ_f)$qSMQkHaB($e9*p4oFAB0mb5~2{Bip2>k_lx{CKg(?dfF47CpH;LP&ZMr#$ ze76X11>|Rnl(tObFByq!2MhpMWSYa|D=F*yJ;hca!Ip`*t94<)npft~K|-cXlq*DB zv^q;z{yVov3(KlYvxm#My0$Z@>lU=g5a)1QPckbM!rwGXX32SrOeL);R4r)*G+E?(e_YSfFAu@YVyW-u=_A_~BQ%%tBBp*iwGy*t-~k{uVs=}Pb3ezp zY{yUfeLb)m0)ltDeO|1w)=i1}+Z;!ODSlNOWR+LRq;RDsDEXy_SE|}`BX1m90HbiY zwpb)dJA~8uEH8o1f8NpyTaeDSP{hJrc30f0Wo?nPkUltbR`jqnU$zXvV-r(e+z6xZ zQ#%Y{EtYK{ZjRnlru!er=o*OQxQ3nc_l>?y%eriE1*(FDyW;NoK+Bq{jO{?P;5tr7 ztCNq`GAwEYBQoE1*08#7u`LiYlFdvrUqKT(=@J{NKUK__meEr`keHUSiO&-!1LwpS zJ5(0lvJ;=Z#RAHf7%}Pc9yPZU#5%xRIDXqGX43_tRG$QF4xdj{N?sT^a7 z*AqhYzV@YVs2DIIQ2IH1do#+_aOCU&-1NH$c1EGIuX_}eS5GI(IfHs%V+a3FS7#Yh z*SEBB+>2A3L$TscfkJVoP~73*?oN@7+d+!EyOrYZ4yCx4gS!_g&ddGZo7~)Yf7sbs znKf&&vXixvdFD4YDY+$Ifi}PnZp`UJqQaH%J-XV=-PPBJcDO7zN7y0MK+Pt#KWm{> z_f_*lOJw;|y}9$epOHKqGdGv6`qK7HN-HYNe$b{)J(1nGKRCw6Y;f-981V^Q4ayQ- zy9b!F@`Ag)h-h#BLhX+yrprJ+OPSqFY*}==Q-Wm*=cO<6U7dI904;mE*A(Gw*~zTG zrF7pFr!>_IBl2oa=oTB=U4+Gp_ZcO|WdnA3yL~H5zd{8s1>z-s?9Ob) zy`Nyt*S{8*ww3a1#-IG)sfGEYdbOc5Vy>j6T*0b*-{YmVeWWc-NCl^1f}P>5^dw01 zXRvc2mL~f#;UCHk90cX@f~P0DFxweOF30btv;oK?!m`vIkf11ZlJMoh`VO8FgtXn) z%>uyWa#M;iKDeRI%(%MC7Hf91MwmJLO|hyK-@6)ftF7C2^`5f1gwe@>z2ZTd%s^h$ zT-aZ;oD$Y50P0#^0@|crG$7BgSOIR_Z??^c*)JePo$i2FD=gB-`+5t<2qAyZ*^e5Ab>MkG0*Y6u^X#TJ~riY`CzAf%7qSVx#FYx+(c%*Q>C)FyYRe(caVM zG{Ln4ycu7fXa)pf8PV4fzB-Zg5YsH?go;Lttc+Fas(yjEK{vl&GSM?)R>)w$x!Tq+ zi(A&n^fRfemmh9v%z?gF=;T$*!ylHnO{yy#md~n}RgAalT<#)!`I%lZ9OZy|>?#qN(yZ&T|=HYMh)tN2PV-@ezHI zCp5I=!luC^`L(gw^@oc)Om-W20kVCr5hc1=6(<~oke=(}==OBP1{I9*z??=&n?Jy3Hd)`ct5_Jz}FrLNiFUThLYLe==4*!$` z!YFEyH|5@g9#IsX^XpIcJ3uAS`qw(q!uXcPqN@(9>o7i> zdkJ2p>Yr-4;C$17b)LeQ4Du4lLJ_0SAVLosCA=>Ydlzq|ZuEj|5m@U=6DOPbraUqV zWXNlTSYboR*G7o2ld0Ga%8m367Q5i*ZnD&7e`7STQzEZ5}Z|Mq{_U)AZs>h@F zN84S9>sBB8MpK($Dhl)Fq)QLU+gDf}9MrCBmr*35(@T{Jc}Vi5RA((CNbHmgsI6T? zB(M`?WT+`=aIsZTQAQBxv(Wg7puu3PRPmgOW)x^@FjGrn`zWXYlL*i^KYdubgXmcn z3WUDIoi0wC#B|_F2^X;IMf(0g$Q{0%?_wQ_pvB=wA9Q3RrrXGTM@b`#Q_LYGxdfiMXWFG|*%fLAsOdYlH`x0hoHZ<1ZCx50xXN;<9_Y&p$WBe&qM? zGUQ?|NiTZGnmK{`3r%oRF78#?d+B{yCHL(d5FP(=Ta;ekV!aO^>l@ zYx(SB>gos_W>INmzg?CHEs=MI4en<{zFlAKtzb_lSKHN&@r%pzBb9m<9@Zk%sQw9H zoKrkJZsoUJ-E#c0`qmld;t&<+seu*13ku=$v*77PC<)wjVJj_6Q$t!wHtMd>v?=cV z5Mb6Om;F?G{Y98QCuxoDhvuj1t#a<1ox|}vW-mja#0-lwhxY0Hf$%5Z7unr93Xgfw zKslw?Ka#c-At^VOQ~!$%`wy2XuK*-vY5_b2(xnK?<>6oAGg9uY*&k|WuIuBnzQ69D ztFJ+lm<$3(L@@Ve;nAhWyClAY`*!u>BeQ0PK83XJK=8qRN!nDEKCJN9I^pHhhueH7 zgP9mWnZB5QX!hcemt7(Aa9~FbhP9lE8PB4%0{TG5{@xFNBQmh4t?g*_Zm{rOVoy^C zY8Izh#F-Zx3L~4Ra05D&P@;F8t}c8IQA2dN63fj${c$~VPOSr{b8`9`!pn?MRr({} z2CJksy+~zlu5S9xoANPw6MA*c^6zT;Gy(^JnMN+Jrau0zQj!}nqA7Z`*-1>Y+H5bu zsQ;Ed{fDx%+&Z<^MFm8Rh8BOIgq?237q#XLca%748F%!gMQn_iY1sG)3K==e!O339 zvN6ac%VOL+iwT1-dO03q1ft z^VHKm)?Jq0MWD?c+Xl-WXx)C~_J zYq&cFk|pP8y61M2wMeXEit->erYOfjCfaN?zJBf;qp|*u6)gwj&GGqFm@#i^)2s3s zAtD5hiSMS5G-3x0ZDy?oXc$@WtKN?O zc`x|gql-;^&I75qv<&8DnSU?6IihzRqwz0>A>IHMP(V&HORlaoL_m4arVouN%chSM zLW{vuF*D`!XRw%7yHA$)WBoy(f6Q7^Wy`iTjNjk%{i~V-xWSBgGYMvD<5o{NyD^E1 z#c4!y=)J6e72~;wj+nMMy8gbBL0yv274>D_CE--E#z5r;hhBY3@%k$eBm_4${UpQJ* zPnL9&Ek2k`l#KKyD8{WN`p8CB|$0U-K^IKn6g=ij#WPj(I7Pj-53Z<~o!-m6XZTfnI$seb~B4ws1iP&zOK z^u*gjYn$WUZO-S=twGdY=u%L(%=aEb0OtAvqWcc#(1~c>lDUi?8J9p%4QK{#B=_^B zoR@MGen`O2_*wDP+ac?QLFXc58WdusUimSRia7V*vIr6}Du&P2KpX3AndoukxVv`)MM-LU_Rsx& z2BuAX2XGbH!*KXnMcg1J?!Tr@v*~7yP%SP2hIW%1-rr$B$#WI2K4;+3_w~zjrl{|# zUCmoR)fbSixycI?Gj8>1-}P%+{Gz)w1>dBKVZzJ^wg~msp+TtdGNNsFQ9KUN# zfL$ukswRsp7=`$akqPI!NY+Qg%~&t!z#T0vZLO!M`B!Uf$@frlCr1p82LT${iwEdw z%HQAfSRJbgSe5f*+!SF9y9^f2TFWSsMq~v$47)nqe4VHk3L?btQ*z$!JRgPD1C^`U zW|}rMg^AZtK1$jSc3=iw{lRs(gi@*S0%G7`(Uq7ra6>>psb)~uj2V%M|i2cx`Xp=;3zec%B=e?3xqVwx?fZVzj5jHX3?$U6)RBL=nS|+u02<8VFzi+*Dw2r?Jlzt=z;|Sgav4z8h+rXlA-6|&m z=w-(#`ql<}VJOsOb&o~Q#ZTttMbWvqlS5XX<0l)jm2nEU8Rtw;g*_oM?cr~8|!t^ZSrh|My`G~CS#^j>JK7X>E; zJf{I^`Wz}Cr5HQ8;8F`WW5j)Wvb;OSuHa|V5|jrrWpkWS^3nP#B>#C9C<^{H;HdYO zBl6Vo7{xtNVZ27UOMnI$@i#f*nfDK#5)k!VU37|{Qudy^7sYsjb2?o^8M+j5=m_Zf z+Wpsuw=aJfEI*n!WSn=aqhb+_4?Mz53UG+>rrnw+(v0^45Oc+iIu)+uh9-GLP zo5)*p(fYSNhI@ziJ&n(1ewIv^LBxV;1i@R>iA22=o#^7VT)(J7wT?J~dnORY9dYx= z%JVoiqodx5=u3-Uy+wm_4G4vq`$|NRSE4G(Y($24*o%uKO~_m`2gESrELKL*Rvd<( zauUXIHY}t7I&SJBc0oz`ry_QP9BqNi#Z%*yEmT300$lW3H87 zkw(w^m3q)hxdJP4X~1OX$B3oKiAc~m9o2qTagoaw0zMsTgnuTbVCI|?-#lrJ-0@`N)nW`Ia189r-l%MO8jiumG#(D>HVqTnf7_u_~;F zJC%`4``TcS=xGIt7lsIl)0DZX1%m!P;%JTQP7HTGnXmK9C1UuG1$?cz-A>6TyGp+{ z8OwJ&qXtXi^L#dpkzDQI-KZE{;g)RggEscLo~O1RI1R^irLtw$poq1*KGNyxMN!Con<26Vd6cGxrc?{DkAS6W{J-NOGcY0ynJC5CNCE*)aLy+aS4~e9R z8T*2438Xf-J+|DtdoOsr{MgL>j%aI4X6-F2cHLZ#C4i$rH~|=Ue8ZrS6bGjoNwmSC z#sneaw+mnv42b1@#Mz*nM~Dyo^Pr9_ms_bC_`*n_$bHVmr{rsdJe6=AewFR;w@ zt0Q7AW??pvlhDagM~ct>+UUJv>8^eBvUuzY_4sYJNi1p=yVdoZH@JwdC9Bg)l_MEu zF3`XM1prTE+JNu_Qi$H^X8l`Tt-oIm`fWRH!DsmpC;YaSywv@d2fX(b-M7I<(#x#4VTbL9qmvEa%!Wt;7u(&Y_1Gp5ACyrd}&rTk5kybh?@0S)PO?v)Fod@9u%!{ zdtnKehl0clKM&am&wdHrT4&yw<~F<5!1QOn&B<(sIZ;{rvfn5L@hqF-`fsx&0>F?dWAYi3Hx7 zTi{`cv-|W4M^~iYdssPxpBkxJ61p?^b8dVR z79m$on678*Gx9VdUR&)phJ`D%(%2Xo-R8G1d^hoXMa++Uw@i2>oP|yDa*R9N+{au% zASrhsY4L`y5nEt!(RP>la#Bz@!klS*jkSc7vR~`N?0Jr7GoaHbOzb6CVY|R!)iM>d z(4Rb3#YM8S_|iBgol^pX$hB0yv`}wfa6kY)&t>ja-}Z#J=n;snf^klhzLf9nqk-yo zM4FE_>nVuwY956?_~L(RAR{b=M&!y!FuAl*#F}IuE6QQ0=YO1Ik*Dit$B++N6<6jS zQ8JU~GL`&*56I8SZD8n8{2{G03pb_s1beI^QIgvET^n~P(?K^y^5ZntoU&CwCnN^x zQn@_}OC!!LILcKHN<*!k&l%8aSzJV#Y(IhwDK91pWyV~>fR5ScDi)<5y7{H>>rM{|!shM%XTUs@{(^eKu zBJH5lDi))j;q{}vRFqboOLV{1o}s*0T-^rY24D3(C2DjjC(qBOeVYkl!v(l9qvz1? zc6(j1F+V{n(qFA)yK-XIuh$L9t!BTSyPFclUxe!ZHYb~u@M3+i?7bJ|agyUX%9$L% zX=3vM#{(>{WCWlasUoL$mHQ!{$GBtXreOi$cDJ}JKHXt6**&Tp|1K;ssrVUhVo6$N zl$%D(HD5*Y9f_c-C@pGSqR+q_?`(7 zQ>g4^QLgp zgy>ScPd1Y!{N-ih?2`WOOe+)eh9V!I9TL>dN6I(eYWiVsspKyrX7k&>JYASUW_>xd z@<7jU=)xlEX3`4iY?RXhF)rbDV;iOxlRx-zo}*AvzJx(2qR_ldeCckJJ@{$;{EhCa z?%GL(Q9|bC@|IG#BGDIqdmZni`wEMljPKsrgaEP`;mUKvVM|Zo%h7h7li<@yv}ZKo z%M=k!_p^ow(h1FgO8u?neq=uh|kAa^oRNnRIQ_Q~u-sO`&% zzy6IjuU-B)A@@sK)yl+cahnP6PlF%sDg0$mOg6%`-sWMIpG+xCoXwZ`dKzzRQ$2Tl zn=P}BODJ?C;BYexJpFf0?ZVc2D|BYzl?j&fGg7LsVNU8wiv1(c%WY|Jh3s$|2xinm3 z+txUDA3D~pM7$OC3Gj|-=*Wfv0ZTrdn@H^+ZBPxeIUl>R&Yi*OLu#jB((V)0iD|(PlJ!SU_)QYj%7}!?8`^N7p&zQ6KkxO&KSJYngj0V z`(T|t(H|Ggj4y?i4kEe&$Bw5CXN$@Ce90v<>6=lq(di~l=7*UJ7!cBOS^QO}1qZB* zhdX)4Hf8)p^-^An79KHz3aL-lvr@%E-*Lv>^zBTQQw<3`$#0HL5w}3M!mxF+_2IAx z<*0{|b#o0LVbRhN$l@Hnz`*2aB@j1#B>M*+1_$#h_Jn~Uemy<^^}zn~e$Yv9XktSA zH;yT%i2!b2KOsYxJVCt?JE6n?8{@y02u2AnO$=oJAZ!p}U=CgdXaDPp&>}&inThOw znF{|b@}IT3Z2v=8V1tW_di|7w`xKpU68SEHzXhA@9|hm5HUDc|WdEM^pJ`#S3B1u1 z|B8t0{|ny!8(rDAgz6S{vj66%VPGi#$IH94R|ArS(`1wc@>XoJ|9_wOucx@`1ld+b Kr0&Ll4gDYavaLn{ delta 40088 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 k%Sv